顺序表和链表的区别

顺序表和链表的区别

顺序表和链表的区别


1、存储分配方式不同:顺序存储结构是用一段连续的存储单元依次存储线性表的数据元素,单项链表是采用链式存储结构,用一组任意的存储单元存放线性表的元素 。
2、空间利用率不同:顺序表的空间利用率显然要比链表高 。因链表在存储数据时 , 每次只申请一个节点的空间,且空间的位置是随机的,这种申请存储空间的方式会产生很多空间碎片,一定程序上造成了空间浪费 。不仅如此,由于链表中每个数据元素都必须携带至少一个指针,因此链表对所申请空间的利用率也没有顺序表高 。
【顺序表和链表的区别】3、开辟空间的方式不同:顺序表存储数据实行的是 “一次开辟,永久使用”,即存储数据之前先开辟好足够的存储空间,空间一旦开辟后期无法改变大?。ㄊ褂枚榈那榭龀猓?。而链表则不同,链表存储数据时一次只开辟存储一个节点的物理空间,如果后期需要还可以再申请 。因此,若只从开辟空间方式的角度去考虑,当存储数据的个数无法提前确定,又或是物理空间使用紧张以致无法一次性申请到足够大小的空间时,使用链表更有助于问题的解决 。
数据结构三顺序表和链表的优缺点区别,特点是什么顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景 。通过系统地学习顺序表和链表我们知道,虽然它们同属于线性表,但数据的存储结构有本质的不同:
因此,若只从开辟空间方式的角度去考虑,当存储数据的个数无法提前确定 , 又或是物理空间使用紧张以致无法一次性申请到足够大小的空间时,使用链表更有助于问题的解决 。
从空间利用率的角度上看 , 顺序表的空间利用率显然要比链表高 。
这是因为,链表在存储数据时,每次只申请一个节点的空间,且空间的位置是随机的,如图 2 所示:
这种申请存储空间的方式会产生很多空间碎片,一定程序上造成了空间浪费 。不仅如此,由于链表中每个数据元素都必须携带至少一个指针 , 因此,链表对所申请空间的利用率也没有顺序表高
根据顺序表和链表在存储结构上的差异 , 问题类型主要分为以下 2 类:
第 1 类问题适合使用顺序表 。这是因为,顺序表中存储的元素可以使用数组下标直接访问,无需遍历整个表,因此使用顺序表访问元素的时间复杂度为 O(1);而在链表中访问数据元素,需要从表头依次遍历,直到找到指定节点,花费的时间复杂度为 O(n);
第 2 类问题则适合使用链表 。链表中数据元素之间的逻辑关系靠的是节点之间的指针,当需要在链表中某处插入或删除节点时,只需改变相应节点的指针指向即可 , 无需大量移动元素,因此链表中插入、删除或移动数据所耗费的时间复杂度为 O(1);而顺序表中,插入、删除和移动数据可能会牵涉到大量元素的整体移动,因此时间复杂度至少为 O(n);
综上所述,不同类型的场景 , 选择合适的存储结构会使解决问题效率成倍数地提高
简述顺序表和链表的概念及特点顺序表:空间位置连续,以空间位置表示逻辑关系,访问效率高 , 插入删除效率低,有可能有空间溢出的问题
链表:以附加数据域表示逻辑关系,只能顺序访问,但插入删除不需要移动元素 , 适应于元素变化较多的场合
顺序表和链表有什么不同之处顺序表是用一组地址连续的存储单元依次存储线性表的数据元素;链表是用一组任意的存储单元存储线性表的数据元素 。顺序存储的主要优点是节省存储空间,因为分配给数据的存储单元全用于存放结点数据,数据之间的逻辑关系没有占用存储空间,而是以空间上的相邻关系表示;而链式存储的优点在于便于修改 , 进行删除和插入时,不必移动结点,只需修改相应结点的指针域,但存储空间利用率较低 。在操作过程中不需要移动大量数据时,用顺序表较好 。
静态链表和单链表的区别顺序表和静态链表的物理结构(即存储结构)是相同的,在计算机内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性结构,但两者的数据结构(逻辑结构)是不同的:
顺序表:着眼于整个数组,采用动态分配的一维数组,仍然借助了指针进行数据操作,具体描述如下:
typedef struct
{
ElemType *elem;
int length;
int listsize;
}Sqlist;
在线性表的插入和删除操作时,需要借助指针来移动元素 。
静态表:不设指针而使用链表结构 , 数组元素的一个分量用于存放数据,另一个用来作为“游标”指示下一结点在数组中的相对位置,数据的存储尽管是采用一维数组的形式存储在计算机中 , 但仍然是继承了链表指向不一定总是指向紧挨着其的结点,描述如下:
typedef struct
{
Elemtype data;
int cur;
}component,SLinkList[MAXSIZE];
这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针(游标),故仍具有链式存储结构的主要优点 。
鉴于两者的数据结构不同,对用的数据操作也就不同 。

    推荐阅读