自己实现集合框架(六):实现单链表逆转
2017-05-25 00:00
323 查看
一. 什么是单链表逆转?
我们都知道,单链表的每个结点由两部分组成,一个数据域data和一个指向其后继结点的指针域
next,最后一个结点的
next域为空。单链表逆转就是将链表中各结点的
next域指向它的前驱结点,原来第一个结点的
next域为空,
head指向原来的最后一个节点。
二. 算法描述
单链表的逆转算法描述如下:1. 初始,设置
p结点指向第一个结点,
front结点指向
p的前驱结点,
q结点指向
p的后继结点。
2. 循环中,将
p的后继结点
p.netx指向
p的前驱结点
front
3. 循环结束后已经实现逆转的单链表如下所示:
三. 算法实现
设p指向单链表的某个结点,
front是
p的前驱结点,那么使
p的后继结点
p.next指向
p的前驱结点的语句是:
但是如果使
p的后继结点指向了
p的前驱结点,那么
p和原来的后继结点之间的链接就断开了,于是我们需要声明一个
q节点来记住
p和原来后继结点之间的关系,使
q=p.next。
front,
p,
q这三个结点的引用同时沿着单链表向后移动。
可逆转的单链表类是在前面文章已经实现的单链表SinglyLinkedList类的基础上增加了单链表逆转的功能,也即继承自
SinglyLinkedList类。代码实现如下:
四.测试
测试代码如下所示:运行结果如下所示:
五.源代码示例
相关文章推荐
- 自己实现集合框架(十):双链表的实现
- 自己实现集合框架(五):利用单链表解决约瑟夫环问题
- 自己实现集合框架(七):带头结点单链表的实现
- 自己实现集合框架(十二):顺序栈的实现
- 自己动手实现集合框架类(四)之LinkedHashMap
- 自己实现集合框架(八):可排序单链表的实现
- 自己动手实现集合框架类(一)之ArrayList
- java8集合框架LinkedList类实现自己简单的理解
- 自己实现集合框架(十一):栈接口定义
- [JAVA]集合框架之自己实现一个具有基本增查删改功能的ArrayList
- 自己动手实现集合框架类(三)之HashMap
- 自己实现集合框架(十三):链式栈的实现
- 自己实现集合框架(九):循环单链表的实现
- 自己实现的集合框架
- 《C链表实现集合的差运算》
- 打造自己php的开发框架--php的MVC简单实现
- 自己实现的一个寻径算法的框架,具体算法采用动态库模式,可以非常方便灵活地尝试多种寻径算法
- 手动实现枚举器、泛型集合、单链表
- 单链表的实现(包括就地逆转单链表,表排序, 合并单链表、判断表是否有环)
- 单链表的实现(包括就地逆转单链表,表排序, 合并单链表、判断表是否有环)