LeetCode-206-反转链表

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题思路

采用迭代的方式,三个辅助变量
pre代表原顺序的前一个节点
cur代表当前节点
next代表原顺序的下一个节点
于是当cur != null时循环操作

  • 记录当前节点原顺序下的next节点为next
  • 当前节点的next指向pre,此时断开连接破坏原顺序
  • 然后迭代pre = curcur = next,使各个指针在原顺序下往后移动

代码

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur = head;
        ListNode pre = null;
        while (cur != null) {
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}

你可能感兴趣的:(LeetCode-206-反转链表)