美文网首页
剑指 offer 笔记 15 | 反转链表

剑指 offer 笔记 15 | 反转链表

作者: ProudLin | 来源:发表于2019-06-19 00:51 被阅读0次

题目描述
输入一个链表,反转链表后,输出新链表的表头。

问题分析
要正确的反转链表,需要调整指针的方向,为了更好的描述分析这个过程,可以用图来说明。

image.png

(1)一个链表。
(2)把 2 节点之前的 next 都指向前一个节点,导致节点 2、3 之间断裂。

所以我们需要在节点 2 断裂之前,把节点 3 保存下来,总的来说,在调整节点 1 的next 指针时,除了要保存 1 本身,还需要知道 1 的前一个节点。同时还要保存 2 节点,所以我们需要定义三个指针。

public class Solution {
    public ListNode ReverseList(ListNode head) {
    
        ListNode pre = null; //pre 为当前节点的前一节点
        ListNode next = null;//next 为当前节点的下一节点
        if(head==null){ // head 为当前节点
            return null;
        }
        while(head != null){
         //1、先用 next 保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂
            next = head.next;
        //2、保存完 next,就可以让 head 从指向 next 变成指向pre了(指针反向开始变了)
            head.next = pre;
        //3、head指向pre后,就继续依次反转下一个节点
        //让pre,head,next依次向后移动一个节点,继续下一次的指针反转
            pre = head;

            head = next;
        }
      //如果 head 为 null 的时候,pre 就为最后一个节点了,
      //但是链表已经反转完毕,pre  就是反转后链表的第一个节点
      //直接输出 pre 就是我们想要得到的反转后的链表
        return pre;
    }
}

注意:对于这道题,至少要想到几种测试用例来检验:
1)输入的链头表指针是 null

  1. 输入的链表只有一个节点
    3)输入的链表有多个节点

参考文献:https://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca
来源:牛客网

相关文章

  • 剑指 offer 笔记 15 | 反转链表

    题目描述输入一个链表,反转链表后,输出新链表的表头。 问题分析要正确的反转链表,需要调整指针的方向,为了更好的描述...

  • 反转链表

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:链表 题目描述: 输入一个链表,反转链表后,输出新链...

  • 剑指offer:15 反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头。 Python class Solution: # 返回L...

  • 剑指 offer:15、反转链表

    15. 反转链表 题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路: 通过3个指针遍历一遍链表,实...

  • 剑指Offer - 15 - 反转链表

    题目描述 反转链表 输入一个链表,反转链表后,输出新链表的表头。 思路 用一个指针来保存链表倒序,遍历一次链表,每...

  • 2022-03-26 链表反转回文

    反转链表:java版本: 剑指 Offer II 027. 回文链表[https://leetcode.cn/pr...

  • 24.反转链表

    剑指 Offer II 024. 反转链表[https://leetcode.cn/problems/UHnkqh...

  • Day1 翻转链表+数组中重复的数字+链表中倒数第k个节点

    剑指 Offer 24. 反转链表(简单)[https://leetcode-cn.com/problems/fa...

  • 剑指 Offer 24 反转链表

    剑指 Offer 24. 反转链表[https://leetcode-cn.com/problems/fan-zh...

  • 反转链表

    《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。 思路:反转链表就是将链表中每一个节点的...

网友评论

      本文标题:剑指 offer 笔记 15 | 反转链表

      本文链接:https://www.haomeiwen.com/subject/lqucqctx.html