上一篇提到的单链表是否能从一个结点出发访问链表的全部结点?
答案:不能
为此引出循环链表(单循环链表circular linked list),相比于单链表的区别是将单链表的头尾相连接即可。
两种类型:头指针和尾指针
尾指针有优势一些,访问第一或最后一个指针都是O(1)
两个链表的合并:
关键的点是:
//将B的头结点去掉
p=rearA->next;//将A尾结点指向的头结点给缓存结点p
rearA->next=rearB->next->next;//将B头结点指向的下一个结点的地址赋值给A表的尾结点
rearB->next=p;//将A尾结点指向的头结点的地址赋值给B的的尾结点
free(p)
也就是说:将A的尾巴指向B的头的下一个位置,再将B的尾巴指向A的头。
参考:《大话数据结构》