玩转《数据结构》顺序表和链表的比较
1.存取方式
顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素
2.逻辑结构和物理结构
采用顺序存储时,逻辑上相邻的元素,对应的物理存储位置也相邻。采用链式存储时则不一定,对应的逻辑关系是用指针链来表示的
3.空间分配
顺序存储静态分配时,一旦存储空间装满就不能扩充,预先分配过大,可能导致顺序表后部大量闲置。动态存储分配时,虽然存储空间可以扩充,但是需要移动大量元素,而且如果内存中没有更大块的连续存储空间,则会分配失败。链式存储的结点空间只在需要时申请分配,只要内存有空间就可以分配,操作灵活、高效
4.怎样选取存储结构
1)基于存储的考虑
- 难以估计线性表的长度或存储规模时,不宜采用顺序表;链表不用事先估计存储规模,但链表的存储密度较低
2)基于运算的考虑
- 按序号访问ai顺序表更占优势,是O(1)的时间复杂度,链表是O(n)。顺序表的插入、删除平均需要移动一半的元素;在链表中进行插入、删除时,虽然也要找到插入位置,但主要是比较操作,这个角度考虑显然后者优于前者
3)基于环境的考虑
- 顺序表容易实现,任何高级语言都有数组类型;链表的操作是基于指针的,相对来说,前者实现较为简单