数据结构之线性表(六)——循环链表

数据结构之线性表(六)——循环链表循环链表的定义 1 概念与特点 循环链表 是一种头尾相接的链表 表中的最后一个结点的指针域指向头结点 整个链表形成环状结构 优点 从表中任意一个结点出发均可找到表中其他结点 补充 由于循环链表中没有 NULL 指针 所以涉及到遍历操作时 其终止条件不再像单链表那样判断 p 或者 p gt

大家好,我是讯享网,很高兴认识大家。

循环链表的定义

1.概念与特点

循环链表:是一种头尾相接的链表。
表中的最后一个结点的指针域指向头结点,整个链表形成环状结构。
在这里插入图片描述
讯享网
优点:从表中任意一个结点出发均可找到表中其他结点。

补充:
       由于循环链表中没有NULL指针,所以涉及到遍历操作时,其终止条件不再像单链表那样判断p或者p->next是否为空,而是判断它们是否等于头指针,如下图所示,
在这里插入图片描述
2.循环链表的查找(两种表示法)

  • 用头指针表示单循环链表
    • a 1 a_1 a1的时间复杂度: O ( 1 ) O(1) O(1)
    • a n a_n an的时间复杂度: O ( n ) O(n) O(n)
      在这里插入图片描述

因为对表的操作常常是在首尾位置上进行,所以该表示方法对于查找首尾元素而言不方便。

  • 用尾指针表示单循环链表
    • a 1 a_1 a1的存储位置:R->next->next
    • a n a_n an的存储位置:R
      在这里插入图片描述
      所以查找首尾元素的时间复杂度为: O ( 1 ) O(1) O(1),所以用尾指针的这种表示法,在操作循环链表时更为方便。

循环链表的合并

这里主要描述带 尾指针的循环链表合并(将Tb合并在Ta之后)
在这里插入图片描述

  • 具体步骤:
    • 1.p保存Ta表的表头结点,即p=Ta->next
    • 2.将Tb表的表头接到Ta表的表尾,即 Ta->next=Tb->next->next
    • 3.释放Tb表的头结点,即delete Tb->next
    • 4.修改指针,使Tb的表尾连结到Ta的表头,即Tb->next=p
      在这里插入图片描述
  • 算法描述:
LinkList Connect(LinkList Ta, LinkList Tb) { p = Ta->next; //p存放Ta表的表头结点 Ta->next = Tb->next->next; //Tb表头连结Ta表尾 delete Tb->next; //释放Tb表头结点 Tb->next = p; //修改指针,使Tb的表尾连结到Ta的表头 return Tb; } 

讯享网

上述算法的时间复杂度为 O ( 1 ) O(1) O(1)

小讯
上一篇 2025-02-28 16:53
下一篇 2025-02-13 15:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/25895.html