/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
// prePtr,curPtr for pointer change
// nextPtr for moving
// stopping -> curPtr is null
ListNode prePtr,curPtr,nextPtr;
// initialize the ptrs
curPtr = head;
if(curPtr == null) return curPtr;
nextPtr = head.next;
if(nextPtr == null) return head;
head = null; // logical head node
prePtr = null;
while(true){
// process
curPtr.next = prePtr;
// moving
if(nextPtr == null) return curPtr; // valid for process, but invalid for moving more
prePtr = curPtr;
curPtr = nextPtr;
nextPtr = nextPtr.next;
}
}
}
- 初始化三个节点
- 第一个节点设置为null,第二个节点指向第一个节点,第三个节点指向第二个节点
- 第一个节点设置为null 用作链表第一个节点,类似于逻辑节点,这样使得第一个节点前面和其他节点一样都具有一个节点,统一处理的模式