1. 顺序存储结构和链式存储结构的优缺点
存储空间
顺序存储结构是要求事先分配存储空间的,即静态分配,所以难以估计存储空间的大小。估计过大会造成浪费,估计太小又容易造成空间溢出。
而链式存储结构的存储空间是动态分配的,只要计算机内存空间还有空闲,就不会发生溢出。
另外还可以从存储密度的角度考虑,存储密度的定义公式为:一般来说,存储密度越大,存储空间的利用率就越高。
显然,顺序存储结构的存储密度为1,而链式存储结构的存储密度小于1。
运算时间
顺序表是一种顺序存储结构,对表中任一结点都可以在O(1)时间复杂度下直接访问;而访问链表中的某个结点时,必须从头指针开始沿着链表顺序查找,时间复杂度为O(n)。
链表顺序查找,时间复杂度为O(n)。
因此,如果对线性表的操作以查找为主,则采用顺序存储结构较好;若以插入、删除为主,则采用链式存储结构为宜。
2. 简述顺序表和链表的优缺点及适用范围
顺序表
长度固定,必须在分配内存之前确定数组的长度。
存储空间连续,即允许元素的随机访问。
存储密度大,内存中存储的全部是数据元素。
要访问特定元素,可以使用索引访问,时间复杂度为 $O(1)$。
要想在顺序表中插入或删除一个元素,都涉及到之后所有元素的移动,因此时间复杂度为 $O(n)$。
顺序表最主要的问题就是要求长度是固定的,可以使用倍增-复制的办法来支持动态扩容,将顺序表变成“可变长度”的。
这个办法不可避免的会浪费一些内存,因为数组的容量总是倍增的。而且每次扩容的时候,都需要将旧的数据全部复制一份,肯定会影响效率。不过实际上,这样做还是直接使用链表的效率要高。
3. .顺序表的空间利用率高于链表吗
朋友,我来告诉你答案!一般地,存储密度越大,存储空间的利用率就越高。显然,顺序表的存储密度为1,而链表的存储密度小于1。所以顺序表的空间利用率高于链表。
4. 顺序表和链表的比较
顺序表的优点:
(1) 方法简单,各种高级语言中都有数组,容易实现。
(2) 不用为表示结点间的逻辑关系而增加额外的存储开销。
(3) 顺序表具有按元素序号随机访问的特点。
顺序表的缺点:
(1) 在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低。
(2) 需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。
链表的优点:
(1) 在链表中做插入删除操作时,不会影响前面和后面的节点,因此对n较大的链表效率高。
(2) 不需要预先分配足够大的存储空间,避免造成空间闲置或溢出的情况。
链表的缺点:
(1) 需要进行指针操作,方法复杂。
(2) 需要为表示结点间的逻辑关系(指针变量)而增加额外的存储开销。
(3) 只能通过遍历找到某个节点,不能使用下标直接定位节点。
5. 顺序表和链表的优缺点
顺序表查询的效率高
链表添加删除节点的效率高
6. 在什么情况下用顺序表比链表好
需要随机访问(按脚标访问)数据的时候;
已知最大元素数量(即最大表长)的时候;
不需要大量插入、删除元素操作的时候。
需要随机访问表中的元素的时候用顺序表更好。
因为顺序表中的元素都是紧挨着排列在一起的,只要知道了第一个元素的地址,在这个地址上加上一个偏移量就可以得到另一个元素。而如果是链表的话,访问某个元素首先都要依次遍历这个元素前面的所有元素,效率是很低的。
(6)链表和顺序表的存储效率扩展阅读:
如顺序表的每个结点占用len个内存单元,用location (ki)表示顺序表中第i个结点ki所占内存空间的第1个单元的地址。则有如下的关系:location (ki+1) = location (ki) +len
location (ki) = location(k1) + (i-1)len
存储结构要体现数据的逻辑结构,顺序表的存储结构中,内存中物理地址相邻的结点一定具有顺序表中的逻辑关系。
7. 顺序存储结构和链式存储结构优缺点
顺序存储结构和链式存储结构的区别
链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的;
链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储结构适用于频繁查询时使用。
顺序存储结构和链式存储结构的优缺点:
空间上
顺序比链式节约空间。是因为链式结构每一个节点都有一个指针存储域。
存储操作上:
顺序支持随机存取,方便操作
插入和删除上:
链式的要比顺序的方便(因为插入的话顺序表也很方便,问题是顺序表的插入要执行更大的空间复杂度,包括一个从表头索引以及索引后的元素后移,而链表是索引后,插入就完成了)
例如:当你在字典中查询一个字母j的时候,你可以选择两种方式,第一,顺序查询,从第一页依次查找直到查询到j。第二,索引查询,从字典的索引中,直接查出j的页数,直接找页数,或许是比顺序查询最快的。
8. 比较分析线性表的顺序存储与链式存储的优缺点
1.空间上
顺序肯定比链式节约空间。链式造成了碎片。
2.存储操作上
顺序要比链式的存储方便
3.插入和删除上
链式的要比顺序的方便