线性表--循环链表、双向链表

上一篇提到的单链表是否能从一个结点出发访问链表的全部结点?

答案:不能

为此引出循环链表(单循环链表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的头。

参考:《大话数据结构》

猜你喜欢

转载自blog.csdn.net/heda3/article/details/83097671