剑指offer JZ15 反转链表
发布日期:2021-05-07 13:14:28 浏览次数:10 分类:原创文章

本文共 831 字,大约阅读时间需要 2 分钟。

反转链表

输入一个链表,反转链表后,输出新链表的表头。

思路

递归

public ListNode ReverseList(ListNode head) {        //递归返回的是当前节点,最终结果需要头结点,如果处理?            //在递归函数外面定义 不好处理            //每次都返回头结点,处理当前节点的链接即可        if(head == null||head.next == null) return head;        ListNode node = ReverseList(head.next);        //让下一个节点指向当前节点        head.next.next = head;        //当前节点指向空        head.next = null;        return node;    }

循环

public ListNode ReverseList(ListNode head) {        ListNode temp = head;        ListNode next_node = null;        ListNode pre = null;        while(temp!=null){            next_node = temp.next; //指针指向下一个            temp.next = pre;       //当前节点连接上一个节点            pre = temp;            //当前节点性质改变            temp = next_node;        }        return pre;    }

突破点
1、递归
先递归拿到最后一个节点
下一个节点指向当前节点,断开当前节点的指针

2、循环
用变量 保存当前节点,方便下一次反向连接

上一篇:剑指offer JZ16 合并两个排序的链表
下一篇:剑指offer JZ14 链表中第k个结点

发表评论

最新留言

不错!
[***.144.177.141]2025年03月16日 15时19分09秒