您的位置:首页 > 其它

自己实现集合框架(九):循环单链表的实现

2017-05-31 00:00 176 查看




一. 什么是循环单链表?

循环单链表是指单链表的最后一个结点的
next
域指向单链表的头结点
head
,使单链表成为环形结构。

1. 循环单链表

rear
是单链表的尾结点,
rear.next=head
使得一条单链表成为循环单链表,如下图所示:


2. 空的循环单链表(空链表)

head.next==head
满足时,循环单链表为空,如下图所示:


二. 循环单链表的实现

1.定义循环单链表

可排序单链表类
CircularSinglyLinkedList
声明如下,它继承带头结点的单链表类
HeadSinglyLinkedList
,二者相同的方法不再介绍,请参见之前的文章自己实现集合框架(七):带头结点单链表的实现,只是在尾插入元素,尾移除元素和清空元素的时候会有不一样的地方,也就是需要把尾结点的
next
域指向
head
结点,代码如下所示:


2. 循环单链表的插入

注意在尾插入的时候,需要把尾结点的
next
域指向
head
结点:
this.rear.next = this.head;



3. 循环单链表的移除

注意在尾移除的时候,需要把尾结点的
next
域指向
head
结点:
this.rear.next = this.head;



4. 清空循环单链表

清空循环单链表,需要执行
this.head.next = this.head;



5. 重写toString()方法

由于循环单链表的最后一个结点的
next
域不为空,需要重写
toString()
,代码如下:


三.测试

测试代码如下所示:

运行效果如下图所示:



四.源代码示例

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