线性表的两种存储结构:顺序表VS链表

导言:写程序解决实际问题时,或者在考试题面试题中,经常会遇到选择数据结构的问题。如果要用线性表,那么什么时候选择顺序表?什么时候选用链表作为线性表的存储结构?在学校写C和C++作业题,用到线性表时,没什么是一个数组解决不了的好吧—_—。考虑到开头提到的情况,现总结几点顺序表与链表的选择依据:

1.存取方式。当对线性表主要进行查找操作,很少进行插入与删除操作时,采用顺序表较好。(顺序表是随机存储结构,获取任意元素的时间复杂度都是O(1);而链表是顺序存储结构,存取某个结点的时间复杂度为O(n)

2.插入与删除操作。对于频繁进行插入与删除数据元素的线性表,选用链表较好。(链表插入和删除某个元素,只需修改指针;而顺序表需要平均移动表中近一半的数据元素)

3.分配方式。当线性表的长度变化较大,难以事先估计其存储规模时,采用链表较好。(顺序表采用静态分配方式,而链式表采用动态分配法)

4.存储密度。如果内存空间是问题的主要矛盾,那选顺序表吧。(顺序表的存储密度为1,而链式表的存储密度小于1)

经验分享 程序员 微信小程序 职场和发展