循环链表

160 阅读1分钟

将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一 个环,这种头尾相接的单链表称为单循环链表,简称循环链表。
循环链表解决了一个很麻烦的问题,如何从当中一个结点出发,访问到链表的全部结点。
循环链表一定有一个头结点 图片.png 循环链表和单链表的主要差异在于循环的判断条件上,原来是判断p->next是否为空,现在则是p->next不等于头结点,则循环未结束。

用指向终端结点的尾指针来表示循环链表 图片.png

将两个循环链表合并成一个表时 图片.png

图片.png

p=readA->next;//保存A表的头结点
readA->next=readB->next->next;//将本是指向B表的第一个结点(不是头结点)赋值给readA->next
readB->next=p;//将原A表的头结点赋值给readB->next
free(p);//释放p