算法 - 循环列表和双链表
什么是循环清单?
在列表的最后一个节点中,链接字段包含 null,这是一个指示结束的值。循环列表由指向列表中的第一个节点组成。据说是开放的或线性的 succ(tail)=head。
通过指针定义循环列表
![]() |
指针驱动的 循环列表 |
1) 浏览列表
![]() |
<名称='更多'> |
var pp:ptr
start
pp := p
repeat
process (*pp.val)
pp := *pp.link
to (pp=p)
end
2) 插入
插入头部
![]() |
插入引线 |
在领导之外进行整合
![]() |
插入顶部以外的内容 |
请参见:
将项目插入到链表中。
3) 删除
![]() |
请参见:从链表中删除项目。
优点和缺点
- 该课程没有特殊情况。
- 三种插入情况:
- 在顶部(空列表)。
- 在顶部 (非空列表)。
- 在其他地方,而不是在 领先。
- 删除3例;
- 在顶部(单项列表)。
- 在 顶部(包含多个项目的列表)。
- 除了领先之外 的其他地方
通过链接定义循环列表
- 路由是从指示它的当前链路创建的。
- 集成没有特殊情况。
- 我们必须确保要消除的链接不是哨兵。