玩转《数据结构》顺序表和链表的比较

278 阅读1分钟

1.存取方式

顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素

2.逻辑结构和物理结构

采用顺序存储时,逻辑上相邻的元素,对应的物理存储位置也相邻。采用链式存储时则不一定,对应的逻辑关系是用指针链来表示的

3.空间分配

顺序存储静态分配时,一旦存储空间装满就不能扩充,预先分配过大,可能导致顺序表后部大量闲置。动态存储分配时,虽然存储空间可以扩充,但是需要移动大量元素,而且如果内存中没有更大块的连续存储空间,则会分配失败。链式存储的结点空间只在需要时申请分配,只要内存有空间就可以分配,操作灵活、高效

4.怎样选取存储结构

1)基于存储的考虑

  • 难以估计线性表的长度或存储规模时,不宜采用顺序表;链表不用事先估计存储规模,但链表的存储密度较低

2)基于运算的考虑

  • 按序号访问ai顺序表更占优势,是O(1)的时间复杂度,链表是O(n)。顺序表的插入、删除平均需要移动一半的元素;在链表中进行插入、删除时,虽然也要找到插入位置,但主要是比较操作,这个角度考虑显然后者优于前者

3)基于环境的考虑

  • 顺序表容易实现,任何高级语言都有数组类型;链表的操作是基于指针的,相对来说,前者实现较为简单