https://leetcode-cn.com/problems/reverse-linked-list/
反转链表感觉还算简单,就是一个个地将链表反转回来就行
注意使用三个指针来操作“链的反转”,防止后继节点指针丢失
要创造一个空节点,直接令节点=null,而不是 =构造函数()
class Solution {
public ListNode reverseList(ListNode head) {
ListNode preNode = null;//改进的地方
ListNode currentNode = head;
if(currentNode == null || currentNode.next == null)
return head;
ListNode rearNode = currentNode;
while(rearNode != null){
rearNode = currentNode.next;
currentNode.next = preNode;
preNode = currentNode;
if(rearNode != null)
currentNode = rearNode;
}
return currentNode;
}
}
再次改进,因为末尾currentNode已经空了,所以直接返回前驱节点的指针就行了
class Solution {
public ListNode reverseList(ListNode head) {
ListNode preNode = null;
ListNode currentNode = head;
if(currentNode == null || currentNode.next == null)
return head;
ListNode rearNode = currentNode;
while(rearNode != null){
rearNode = currentNode.next;
currentNode.next = preNode;
preNode = currentNode;//改进的地方
currentNode = rearNode;//改进的地方
}
return preNode;
}
}