题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出翻转后链表的头节点。
思路:在调整节点i的m_pNext指针时,除了需要知道节点i本身,还需要节点i的前一个节点h,因为需要把节点i的m_pNext指向节点h,同时还需要一个保存i的一个节点j,以防止链表断开,因此需要定义三个指针,分别指向当前遍历到的节点,它的前一个节点和后一个节点。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
ListNode newHead = null;
ListNode pNode = head;
ListNode pPrev = null;
while(pNode != null){
ListNode pNext = pNode.next;
if(pNext == null){
newHead = pNode;
}
pNode.next = pPrev;
pPrev = pNode;
pNode = pNext;
}
return newHead;
}
}