LeetCode 206.反转链表(画图分析)
题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解题思路:
在遍历链表时,将当前节点的 next 指针改为指向前一个节点。
由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。
在更改引用之前,还需要存储后一个节点。
最后返回新的头引用。
具体看下图分解步骤:
代码实现:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head == null){
return head;
}
ListNode pre = null;
ListNode currNode = head;
while(currNode != null){
ListNode temp = currNode.next;
currNode.next = pre;
pre = currNode;
currNode = temp;
}
return pre;
}
}
评论区