一、定义:
循环链表是另一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。
二、分类:
(1)单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可。
(2)多重链的循环链表——将表中结点链在多个环上 [1] 。
三、判断是非为空链表:
判断空链表的条件是
head==head->next;
rear==rear->next;
四、尾指针:
用尾指针rear表示的单循环链表对开始结点a1和终端结点an查找时间都是O(1)。而表的操作常常是在表的首尾位置上进行,因此,实用中多采用尾指针表示单循环链表。带尾指针的单循环链表。
注意:判断空链表的条件为rear==rear->next;
五、特点:
循环链表的特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。
六、补充:
判断单链表是否有环:
- 方法一:使用p、q两个指针,p总是向前一步一步走,但q总是每次都从头开始走,对于每个节点,看p走的步数与q是否相同。
- 方法二:p每次向前走一步,q每次向前走两步,若在某个时候p==q,则存在环