定义:一种头尾相接的链表,最后一个结点的指针域指向头结点,形成一个环。
优点:从任意一个结点出发,都可以找到其他结点。
注1:循环链表的空表,头结点的指针域指向自身,即存储的是头结点。
注2:在循环中,遍历一遍结束的条件是判断是否等于头指针。
注3:从头指针开始,找a1的时间复杂度为O(1);找an的时间复杂度为O(n),不方便;所以从尾指针开始操作:a1:R->next->next;
an: R;
操作
1.循环列表的合并
合并表a和表b:a的尾指针不再指向null,指向b的首元节点,为了不丢失a的头结点,应先将头结点存储;b的尾结点不再指向null,指向a的头结点;释放b的头结点。
注:两个表的表名存储的地址是各自表中的尾结点。
LinkList Connect(LinkList Ta,LinkList Tb){
p = Ta->next;//p存储Ta的头结点
Ta->next = Tb->next->next;//Ta的尾结点指向Tb的首元节点
delete Tb->next;//释放Tb的头结点
Tb->next = p;//Tb的尾结点指向Ta的头结点
return Tb;
}