您的位置:首页 > 其它

自己实现集合框架(六):实现单链表逆转

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
类。代码实现如下:



四.测试

测试代码如下所示:

运行结果如下所示:



五.源代码示例

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: