一、线性表的存储结构分类
线性表的存储结构主要分为顺序存储和链式存储两种。
二、顺序存储的核心说明
- 定义:使用地址连续的存储单元(如数组)依次存储线性表中的元素,逻辑上相邻的元素在物理存储位置上也相邻,因此不需要额外的空间来表示元素之间的逻辑关系。
- 元素地址计算公式:若第一个元素的存储位置为 $ \text{LOC}(a_1) $,每个元素占用 $ L $ 个字节,则第 $ i $ 个元素的地址为:
LOC(ai)=LOC(a1)+(i−1)×L \text{LOC}(a_i) = \text{LOC}(a_1) + (i - 1) \times L LOC(ai)=LOC(a1)+(i−1)×L - 存取特性:支持随机存取,即可以在 O(1) 时间内直接访问任意位置的元素。
- 优缺点:
- ✅ 优点:支持随机存取,存取效率高。
- ❌ 缺点:插入和删除操作需要移动大量元素,效率较低。
- 操作中元素移动的期望值:
- 插入操作:在长度为 $ n $ 的线性表中,有 $ n+1 $ 个可插入位置,等概率情况下,平均需移动的元素个数为:
Einsert=n2 E_{\text{insert}} = \frac{n}{2} Einsert=2n - 删除操作:在长度为 $ n $ 的线性表中,有 $ n $ 个可删除位置,等概率情况下,平均需移动的元素个数为:
Edelete=n−12 E_{\text{delete}} = \frac{n - 1}{2} Edelete=2n−1
- 插入操作:在长度为 $ n $ 的线性表中,有 $ n+1 $ 个可插入位置,等概率情况下,平均需移动的元素个数为:
三、链式存储的核心说明
- 使用一组任意的存储单元(不要求连续)来存储数据元素,通过指针将各个结点链接起来。
- 每个结点包含两个部分:
- 数据域:存储元素值;
- 指针域:存储指向下一个结点的地址。
- 优势:插入和删除操作只需修改指针,无需移动元素,效率较高。
- 劣势:不支持随机存取,查找第 $ i $ 个元素需从头遍历,时间复杂度为 O(n)。
补充背景:
线性表是数据结构中最基础的结构之一。顺序存储通常用“数组”实现,链式存储用“链表”实现。两者在存取效率与空间灵活性之间存在权衡,是后续学习栈、队列、树等更复杂结构的重要基础。



被折叠的 条评论
为什么被折叠?



