顺序表vs链表
空间性能的比较
- 存储空间的分配
顺序表的存储空间需要预先分配,元素个数扩充受到限制,容易造成存储空间浪费或者溢出的现象。
链表不需要预先分配空间,只要内存空间允许,链表中的元素个数就没有限制。
当线性表的长度变化较大,难以预估存储规模时,宜采用链表作为存储结构。
- 存储密度的大小
存储密度指的是数据元素本身所占用的存储量和整个结点结构所占用的存储量之比。存储密度越大,存储空间的利用率越高。顺序表的存储密度高于单链表的存储密度。
当线性表的长度变化不大时,易于先确定大小时,为了节省存储空间,宜采用顺序表作为存储结构。
时间性能的比较
- 存储元素的效率
顺序表是由数组实现的,是一种随机存取结构,取值操作的效率高;链表是顺序存取结构,取值操作的效率低。
当主要操作是和元素位置紧密相关的,插入和删除操作较少时,宜采用顺序表作为存储结构。
- 插入和删除操作的效率
对于链表,在确定和删除的位置后,无需移动数据,只需要修改指针。而对于顺序表,进行插入和删除时,平均要移动表中近一半的结点,复杂度为O(n)。
进行频繁的插入或删除操作的线性表,宜采用链表作为存储结构。