单链表逆置-java(递归与非递归)
来源:互联网 发布:手机遥控汽车软件 编辑:程序博客网 时间:2024/04/29 18:52
单链表逆置-java(递归与非递归)
结点是一个自定义的类Node:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
递归方法用的是栈的思想,想把头结点入栈,接着头结点的下一个结点入栈,直到尾结点位置,
截止依次把栈内的元素出栈,并更换其下一个结点对应的对象:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
非递归的方法其实就是顺着头结点往尾结点便利,便利期间把每个结点的nextNode替换掉,
替换过程需要注意临时存储下一个结点:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
验证:
- 接着初始化一个单链表,
- 调用递归方式将链表逆置,并输出
- 调用非递归方式将链表再次逆置(还原到最初状态),并输出
代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
其中printNodes是输出方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
输出结果:
0 0
- 单链表逆置-java(递归与非递归)
- 单链表逆置-java(递归与非递归)
- 爬楼梯算法-java(递归与非递归)
- 递归与非递归实现树的遍历(java)
- 递归与非递归
- 递归与非递归
- 递归与非递归
- 递归与非递归
- 递归与非递归
- 递归与非递归
- 二分查找(递归与非递归)
- fibonacci数列 (递归与非递归)
- 全排列(递归与非递归)
- 二分查找(递归与非递归)
- 最大公约数(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 第二天的学习
- JAVA 设计模式、虚拟机体系结构、JavaScript
- 蓝桥杯-瓷砖摆放-递推-java
- 【Unity】游戏开发过程中的前后台切换技术
- html 标签学习-列表标签
- 单链表逆置-java(递归与非递归)
- oracle 在一张日志表中,同一个ID 有多条记录,每个ID只获取最新时间的记录
- 通过自动回复机器人学Mybatis——基础版——慕课网
- jQuery中outerHeight()的用法
- highchart柱状图
- OpenCV python 学习笔记(一)
- Linux共享库路径配置
- browserify使用简介
- 中国天气网Android XmlPULL解析:通过城市名获取weatherCode