Static Linked List
静态链表
定义
静态链表是用数组实现的链表。它分配一整片连续空间,但元素之间的逻辑顺序不由数组下标相邻体现,而由游标 next 表示。
每个数组元素通常包含:
- 数据域
data:存储数据元素。 - 游标
next:存储下一个结点的数组下标。
游标相当于指针,但它存的是数组下标而不是内存地址。
结构示例
1 |
|
SLinkList a 相当于定义了一个长度为 MaxSize 的结点数组。
常用约定
a[0]可充当头结点。next == -1表示已经到达表尾。- 可用特殊值如
-2表示结点空闲。
具体特殊值不是固定标准,关键是题目或代码中约定一致。
基本操作思路
初始化:
- 令头结点游标指向
-1,表示空表。 - 将其他空闲结点标记为特殊值。
查找:
- 从头结点出发,根据游标依次访问后继结点。
插入第 i 个位置:
- 找到一个空闲结点并写入数据。
- 从头结点出发找到第
i - 1个结点。 - 修改新结点游标。
- 修改前驱结点游标。
删除结点:
- 找到被删结点的前驱。
- 修改前驱游标跳过被删结点。
- 将被删结点标记为空闲。
优缺点与适用场景
优点:插入、删除不需要大量移动元素;不依赖语言层面的指针。
缺点:不能随机存取,只能从头结点沿游标查找;容量固定,不易扩展。
适用场景:不支持指针的语言,或数据元素数量固定的场景。
关联
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!