原理 | 优点 | 缺点 | 时间性能 | |
顺序表 | 顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度 | 存取速度高效,通过下标来直接存储 | 1.插入和删除比较慢,2.不可以增长长度 比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序 | 查找 O(1) ,插入和删除O(n) |
链表 | 链表存储是在程序运行过程中动态的分配空间,只要存储器还有空间,就不会发生存储溢出问题 | 插入和删除速度快,保留原有的物理顺序,比如:插入或者删除一个元素时,只需要改变指针指向即可 | 查找速度慢,因为查找时,需要循环链表访问 | 查找 O(n) ,插入和删除O(n) |
*频繁的查找却很少的插入和删除操作可以用顺序表存储,堆排序,二分查找适宜用顺序表.
*如果频繁的插入和删除操作很少的查询就可以使用链表存储
*顺序表适宜于做查找这样的静态操作;链表适宜于做插入、删除这样的动态操作。
*若线性表长度变化不大,如果事先知道线性表的大致长度,比如一年12月,一周就是星期一至星期日共七天,且其主要操作是查找,则采用顺序表;若线性表长度变化较大或根本不知道多大时,且其主要操作是插入、删除,则采用链表,这样可以不需要考虑存储空间的大小问题。