顺序表和链表的比较
维度 |
顺序表 |
链表 |
逻辑结构 |
都是线性表,都是线性结构 | |
存储结构 /物理结构 |
顺序存储(连续内存) |
链式存储(离散内存) |
插入/删除元素 |
将后续 元素都后移/前移 |
只需 修改指针即可 |
随机存取 |
支持(O (1) 按位查找) 按值查找:O(n) 若表内元素有序,可在 O(log2n) 时间内找到 |
O(n)(按位查找, 按值查找) |
时间复杂度 O(n) |
时间开销主要来自移动元素 若数据元素很大,则移动的时间代价很高 |
时间开销主要来自查找目标元素 查找元素的时间代价更低 |
存储密度 |
高(无额外指针) |
低(需存储指针) |
初始化 |
需预分配空间,可能浪费或不足 |
只需分配头结点,灵活拓展 |
插入 / 删除 |
平均 O (n)(移动元素) |
平均 O (n)(查找元素),修改指针快 |
适用场景 |
表长可预估、查询频繁 |
表长不确定、增删频繁 |
优点 |
支持随机存取、存储密度高 |
离散的小空间分配方便,改变容量方便 |
缺点 |
大片连续空间分配不方便,改变容量不方便 |
不可随机存取,存储密度低 |
核心结论:
- 若需要频繁查询,选顺序表;若需要频繁增删,选链表。
- 顺序表适合数据量固定、支持随机访问的场景;链表适合动态变化、内存碎片化的场景。
问题: 请描述顺序表和链表.实现线性表时,用顺序表还是链表好?
顺序表和链表的逻辑结构都是线性结构,都属于线性表。
但是二者的存储结构不同,顺序表采用顺序存储 (特点,带来的优点缺点);链表采用链式存储(特点、导致的优缺点)。
由于采用不同的存储方式实现,因此基本操作的实现效率也不同。当初始化时…;当插入一个数据元素时…;当删除一个数据元素时…;当查找一个数据元素时…