博客
关于我
剑指offer JZ15 反转链表
阅读量:335 次
发布时间: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/

你可能感兴趣的文章
java并发学习24:固定运行顺序模式
查看>>
网页的基本页面实现 ---- 标签
查看>>
Java.数组算法(补充)
查看>>
【MapReduce】基础案例 ---- 自定义OutputFormat <根据内容输出到指定文件目录中>
查看>>
协议分层
查看>>
SQL case when写法
查看>>
Mybatis使用collection导致分页总数过多
查看>>
centos7 elasticsearch5.2.2安装kibana5.2.2
查看>>
(六)多进程实现TCP服务端
查看>>
第四课:ES6的内置对象扩展(Set 数据结构:不重复数据)(2021/4/22)
查看>>
一、预编译(2021/4/23)
查看>>
四、js的深浅拷贝(2021/4/24)
查看>>
十四、数组扁平化处理(2021/4/27)
查看>>
数据挖掘于分析实例解析——数据特征分析
查看>>
记录一次需求变动导致的重构
查看>>
使用async、await改善异步代码
查看>>
BugkuCTF web_1-10
查看>>
零基础入门JavaScript 这一篇笔记就够了
查看>>
MySQL_安全管理、表单传值、php操作
查看>>
POJ 3468 A Simple Problem with Integers(线段树+区间更新)
查看>>