2-7 顺序表 和 链表 对比

2-7 顺序表 和 链表 对比_第1张图片

2-7 顺序表 和 链表 对比

1、存储结构的不同

虽然它们同属于线性表,但数据的存储结构有本质的不同:

顺序表存储数据,需预先申请一整块足够大的存储空间,然后将数据按照次序逐一存储,逻辑关系就是靠元素间物理空间上的邻接关系来维持

链表 ,什么时候存储数据,什么时候才申请存储空间,数据之间的逻辑关系依靠每个数据元素携带的指针维持

 

2、空间利用率

顺序表的空间利用率显然要比链表高。

首先是链表每个结点不光有数据域,还有指针域。这就比顺序表多耗费一点空间。

链表在存储数据时,每次只新开辟一个node的空间,且位置是随机的,会产生很多空间碎片,一定程序上造成了空间浪费。

 

3、时间复杂度

根据顺序表和链表在存储结构上的差异,问题类型主要分为以下 2 类:

主要涉及访问元素的操作,元素的插入、删除和移动操作极少;

主要涉及元素的插入、删除和移动,访问元素的需求很少;

 

第 1 类问题适合使用顺序表。这是因为,顺序表中存储的元素可以使用数组下标直接访问,无需遍历整个表,因此使用顺序表访问元素的时间复杂度为 O(1);如果要在链表中访问元素,需要从头指针依次遍历,直到找到指定节点,花费的时间复杂度为 O(n);

 

第 2 类问题则适合使用链表。链表中数据元素之间的逻辑关系靠的是节点之间的指针,当需要在链表中某处插入或删除节点时,只需改变相应节点的指针指向即可,不用大量移动元素,因此链表中插入、删除或移动数据所耗费的时间复杂度为 O(1);而顺序表中,插入、删除和移动数据可能会牵涉到大量元素的整体移动,时间复杂度至少为 O(n);

 

你可能感兴趣的:(数据结构与算法,链表和顺序表)