【LeetCode-简单】剑指 Offer 24. 反转链表(详解)

题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

【LeetCode-简单】剑指 Offer 24. 反转链表(详解)_第1张图片

方法:迭代

思路

定义三个指针,一起往后走,走一步就修改mid指针的next,原本是mid的next 是right,我们修改成left。

初始状态:

【LeetCode-简单】剑指 Offer 24. 反转链表(详解)_第2张图片 结束状态:

【LeetCode-简单】剑指 Offer 24. 反转链表(详解)_第3张图片

 

结束了之后再执行最后的操作:

mid.next = left;
head = mid;

代码

    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null)return head;
        ListNode left = null;
        ListNode mid = head;
        ListNode right = head.next;
        while (right!=null){
            mid.next = left;
            left = mid;
            mid = right;
            right = right.next;
        }
        mid.next = left;
        head = mid;
        return head;

    }

 

 

你可能感兴趣的:(LeetCode刷题,leetcode,算法)