算法 - 循环列表和双链表

什么是循环清单?

在列表的最后一个节点中,链接字段包含 null,这是一个指示结束的值。循环列表由指向列表中的第一个节点组成。据说是开放的或线性的 succ(tail)=head。


通过指针定义循环列表


指针驱动的循环列表”
指针驱动的 循环列表

1) 浏览列表

圆形列表路径”

<名称='更多'>
过程路径(L: ptr , p : ptr)
var pp:ptr
start
    pp := p
    repeat
         process (*pp.val)
         pp := *pp.link
    to (pp=p)
end

2) 插入

插入头部

循环链表
插入引线 

在领导之外进行整合

链接循环列表
插入顶部以外的内容


请参见:
将项目插入到链表中。

3) 删除

从链接循环列表中删除”


请参见:从链表中删除项目。



优点和缺点

  • 该课程没有特殊情况。
  • 三种插入情况:
    • 在顶部(空列表)。
    •  在顶部 (非空列表)。
    • 在其他地方,而不是在 领先。
  • 删除3例;
    •  在顶部(单项列表)。
    • 在 顶部(包含多个项目的列表)。
    • 除了领先之外 的其他地方

通过链接定义循环列表




  • 路由是从指示它的当前链路创建的。
  • 集成没有特殊情况。
  • 我们必须确保要消除的链接不是哨兵。