Leetcode 206. 反转链表(Reverse linked list)

发布时间 2023-08-14 23:28:08作者: Ahci

题目链接

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

思路

迭代法: 创建两个指针, 分别指向当前节点(right)和上一个节点(left), 循环条件为当前节点不为空
在循环中再创建一个临时指针(temp)用于保存当前节点的下一个节点, 防止丢失.
每次循环先用临时指针保存下一个节点, 再调转right和left位置, 最后让两个指针前进即可.

代码实现

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode temp = null;
        ListNode left = null;
        ListNode right = head;

        while(right != null) {
            temp = right.next;
            right.next = left;
            left = right;
            right = temp;
        }

        return left;
    }
}