博客
关于我
剑指offer JZ15 反转链表
阅读量:336 次
发布时间:2019-03-04

本文共 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、循环
用变量 保存当前节点,方便下一次反向连接

转载地址:http://trle.baihongyu.com/

你可能感兴趣的文章
Python+Opencv识别视频统计人数
查看>>
python 记录下Python开发环境的安装配置
查看>>
大佬龟叔写的一个无聊程序
查看>>
linux 下安装kolla报错 提示Cannot uninstall requests
查看>>
Linux MySQL的socket文件存在位置更改
查看>>
Linux RPM和yum命令的使用技巧
查看>>
Python 使jupyter notebook 从指定浏览器启动 以及编程中途更换浏览器
查看>>
写博客常用的字体颜色(待续)
查看>>
C++ throw、try、catch、noexcept
查看>>
vim之vim滚屏与跳转
查看>>
C指针之函数指针与typedef
查看>>
CentOS8 字体大小调整
查看>>
设计模式之组合模式
查看>>
设计模式之外观模式
查看>>
Linux 验证、数字证书、RPM包中文件的提取
查看>>
《Redis开发与运维》阅读笔记:键管理之单个键管理
查看>>
(CMake):指定标准进行编译、CMake官方文档查看
查看>>
(恋上数据结构笔记):优先级队列(Priority Queue)
查看>>
(Python学习笔记):条件语句
查看>>
(Python学习笔记):字典
查看>>