顺序表和链表的比较
- 存取方式
顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素。 - 逻辑结构与物理结构
采用顺序存储时,逻辑上相邻的元素,对应的物理存储位置也相邻。
采用链式存储时,逻辑上相邻的元素,物理存储位置不一定相邻,对应的逻辑关系是通过指针来表示的。 - 查找、插入和删除
| null | 顺序表 | 链表 |
| 查找 | O(n) | O(n) |
| 插入 | O(n) | O(1) |
| 删除 | O(n) | O(1) | - 空间分配
顺序表是静态空间分配,链表是动态空间分配。
实际应用中表的选取
- 基于存储考虑
顺序表:可以估计线性表的长度或存储规模时采用;
链表:不用事先知道存储规模,但链表的存储密度低。 - 基于运算考虑
顺序表:经常访问链表中的元素时使用;
链表:经常插入或者删除时使用; - 基于环境考虑、
顺序表:直接采用数组,容易实现。
链表:基于指针实现,相对较为繁琐。