算法 - 连续列表和链式列表
为什么要列出?
列表在日常生活中经常出现,例如:- 候诊室里的个人.
- 专业注册的学生.
- 汽车正在等待红灯.
- etc.
列表的特征是什么?
- 它们按顺序处理。
- 两端分界<头>和<队列>。
- 可以添加或删除元素.
- 动态结构(大小不一).
1 - 连续表示
我们已经看到,我们可以用数组 T[1..max] 来表示一个列表,但它的结构是静态的(它的大小在我们定义声明中时是固定的).列表类型:Article { T: element 长度:0..lmax } |
最重要的操作
- Le parcours
- 过程路径(L:list)Startfor i from 1 to L.lengthfaireprocess(L.T[i])finfaire完
- 删除(请参阅:s 从连续列表中删除项目).
- 插入(参见: 将项目插入列表 contiguous).
优点
- 直接访问.
- 删除并插入列表末尾.
- 易于实现.
缺点
- 你必须知道如何更改长度.
- 删除和插入涉及偏移量.
2- 代表 链式
它由一系列链接(块)组成,每个链接由两个字段组成:空的链表由 L=null.
ptr 类型:link pointer 链接类型:article { 山谷;element 链接: ptr } chainlisted< type: link/span> var L:chainlisted |
最重要的操作
- The course.
- 过程路径(L:list)顶部
pp := L.link // 头部 de L
只要 pp != null
fairetreat(L.T[i])
pp := *pp.linkfinfaireFin
- 抑制(见: 在链表中插入和删除项目。).
- 插入(参见: 插入和删除链表中的项目。).
优点
- Sequential path.
- 删除了链接.
- 插入链接.
缺点
- 间接访问一个元素,你必须通过i-1链接才能到达 ith maillon.
- links.