1、优缺点对比
-
链表对于存储空间的使用相对灵活;且由于增加了节点的指针域,空间开销比较大
- 优点:
- 对分散的存储空间可以利用起来,
- 缺点:
- 但是由于添加了节点的next域,空间开销会大一些
- 在进行存取数据时,由于需要遍历整个链表,时间复杂度达不到O(1)
- 优点:
-
顺序表具有随机读取的优点,空间开销小
- 优点:
- 即在存取元素的时候可以一次性定位
- 缺点:
- 但是存储数据时必须是一块连续的固定的存储空间,
- 如果进行动态改变,整个存储区都会改变,
- 如果存储的数据量很大,没有适合大小的存储空间时,就无法满足要求
- 优点:
2、操作复杂度对比
操作 | 链表 | 顺序表 |
---|---|---|
访问元素 | O(n) | O(1) |
在头部插入/删除 | O(1) | O(n) |
在尾部插入/删除 | O(n) | O(1) |
在中间插入/删除 | O(n) | O(n) |
注意:
链表的主要耗时操作是遍历查找,删除和插入本身的复杂度是O(1)。
顺序表查找很快,主要耗时是拷贝和覆盖。因为除了目标元素在尾部的特殊情况,顺序表在插入和删除时需要对操作点之后的所有元素进行前后移位操作,只能通过拷贝和覆盖的方法进行