[toc]

链表与顺序表的对比

链表失去了顺序随机读取的优点, 同时链表由于增加了节点的指针域, 空间开销比较大, 单对存储空间的使用要相对灵活.

链表与顺序表的各种操作复杂度如下:

操作                           链表                            顺序表

访问元素                    O(n)                            O(1)

在头部插入/删除        O(1)                            O(n)

在尾部插入/删除        O(n)                            O(1)

在中间插入/删除        O(n)                            O(n)

注意虽然表面看起来复杂度都是 O(n), 但是链表和顺序表在插入和删除时进行的是完全不同的操作. 链表主要耗时操作是遍历查找, 删除和插入操作本身的复杂度是 O(1). 顺序表查找很快, 主要耗时的操作是拷贝覆盖. 因为除了目标元素在尾部的特殊情况, 顺序进行插入合和删除时需要对操作点以后的所有元素进行前后位移操作, 只能通过拷贝和覆盖方法进行.