一、循环单链表:
直接上图就能够说明循环单链表的存储结构,简单直观。
我们关注一下其特点,与非循环单链表相比,循环单链表:
1、无空指针域
2、尾节点的判断条件为:p->next==L;
二、循环双链表:
同样直接上图:
与非循环双链表相比:
1、无空指针域
2、尾节点的判断条件为:p->next==L;
3、可以直接找到尾节点:L->prior
三、代码实现:
事实上,实现循环链表的方法有很多,这里介绍一种学校老师教授的十分简单的构建方法。下面只写出核心代码,其余的根据各位自己的需要自行书写。
1、循环单链表
#if
p->next=L->next;//头插法建表
#end if
p->next=L;//尾插法建表
p->next->next=p;//不论是头插法还是尾插法都需要有这一行代码
2、循环双链表
#if
p->next=L->next;//头插法建表
p->prior=L;
#end if
p->next=L;//尾插法建表
p->prior=L->prior;
p->next->prior=p;//这两句是一定存在的,不论是头插法还是尾插法
p->prior->next=p;