从向量到列表

从静态到动态

数据结构支持的操作,通常无非静态和动态两类:前者仅从中获取信息, 后者则会修改数据结构的局部甚至整体。
向量:静态操作可以在常数时间内完成,而动态操作却可能需要线性时间。(各元素物理地址连续)
列表:列表(list) 结构尽管也要求各元素在逻辑上具有线性次序,但对其物理地址却未作任何限制—此即所谓“动态存储” 策略。作为补偿,此类结构将通过指针或引用等机制, 来确定各元素的实际物理地址。可以降低动态操作的成本。

由秩到位置

会造成静态操作性能的下降。因此,基于此类结构设计算法时,应更多地借助逻辑上相邻元素之间的位置索引
以实现对目标元素的快速定位和访问, 并进而提高算法的整体效率。

列表

列表

头、尾节点

设置哨兵节点(经封装后外部不可见的节点)之后,对于从外部可见的任一节点而言,其前驱和后继在列表内部都必然存在,故可简化算法的描述与实现。 此外更重要地,哨兵节点的引入,也使得相关算法不必再对各种边界退化情况做专门的处理

有序列表

排序器