3.7.1 循环链表的定义
循环链表:是一种头尾相接的链表(即表中的最后一个结点的指针域指向头结点,整个链表形成一个环)。
注意:循环链表中没有NULL指针,所以在遍历的时候,其终止条件就不像非循环链表一样那样判 断p或p->next 是否为空,而是判断它们是否等于头指针。
循环条件:
头指针表示单循环链表:
尾指针表示单循环链表:
3.7.2 循环链表的合并
带尾指针循环链表的合并(将Tb合并在Ta之后)
合并后:
- p存表头结点·Tb表头连接到Ta表尾·释放Tb表头结点·修改指针操作:
p=Ta->next; Ta->next=Tb->next->next ; delete Tb->next; Tb->next=p;
代码:
//循环链表--带尾指针循环链表的合并
LinkList Connect(LinkList Ta, LinkList Tb)//假设Ta和Tb都是非空的单循环链表
{
Lnode* p;
p = Ta->next;//①p存表头结点
Ta->next = Tb->next->next;//②Tb表头连接Ta表尾
free(Tb->next);//③释放Tb表头结点
return Tb;//④修改指针
}