美文网首页
数据结构(三)顺序表和链表的优缺点(区别、特点)

数据结构(三)顺序表和链表的优缺点(区别、特点)

作者: hadoop_a9bb | 来源:发表于2019-04-04 18:06 被阅读0次

顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景。通过系统地学习顺序表和链表我们知道,虽然它们同属于线性表,但数据的存储结构有本质的不同:

  • 顺序表存储数据,需预先申请一整块足够大的存储空间,然后将数据按照次序逐一存储,数据之间紧密贴合,不留一丝空隙

  • 链表的存储方式与顺序表截然相反,什么时候存储数据,什么时候才申请存储空间,数据之间的逻辑关系依靠每个数据元素携带的指针维持

图1:顺序表和链表存储结构对比

开辟空间方式

  • 顺序表存储数据实行的是 "一次开辟,永久使用",即存储数据之前先开辟好足够的存储空间,空间一旦开辟后期无法改变大小(使用动态数组的情况除外)

  • 而链表则不同,链表存储数据时一次只开辟存储一个节点的物理空间,如果后期需要还可以再申请。

因此,若只从开辟空间方式的角度去考虑,当存储数据的个数无法提前确定,又或是物理空间使用紧张以致无法一次性申请到足够大小的空间时,使用链表更有助于问题的解决。

空间利用率

从空间利用率的角度上看,顺序表的空间利用率显然要比链表高。
这是因为,链表在存储数据时,每次只申请一个节点的空间,且空间的位置是随机的,如图 2 所示:

图2:链表结构易产生碎片

这种申请存储空间的方式会产生很多空间碎片,一定程序上造成了空间浪费。不仅如此,由于链表中每个数据元素都必须携带至少一个指针,因此,链表对所申请空间的利用率也没有顺序表高

时间复杂度

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

  • 1.问题中主要涉及访问元素的操作,元素的插入、删除和移动操作极少;
  • 2.问题中主要涉及元素的插入、删除和移动,访问元素的需求很少;

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

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

综上所述,不同类型的场景,选择合适的存储结构会使解决问题效率成倍数地提高

相关文章

  • 数据结构(三)顺序表和链表的优缺点(区别、特点)

    顺序表和链表由于存储结构上的差异,导致它们具有不同的特点,适用于不同的场景。通过系统地学习顺序表和链表我们知道,虽...

  • 数据结构探险之线性表下篇:链表通讯录

    数据结构探险之线性表下篇:链表 链表实现 顺序表的优缺点: 优点:遍历寻址很方便,基于数组效率高 缺点:插入时元素...

  • 带头结点的链表

    1、链表和顺序表 链表是很常见的数据结构,链表总是会和线性顺序表来比较。 1.1、顺序表 具有随机存储的特性,给定...

  • Hash表

    前面讲解了顺序表和链表,两者的优点和缺点都非常明显。   顺序表特点:寻址容易,插入删除困难  链表特点 :寻址困...

  • 数据结构和算法一(线性表和单链表)

    一、前言 二、数据结构 三、线性表: 3、我们在来看顺序存储方式的特点 4、链式存储结构: 四、线性表(循环链表)...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 哈希表与树的入门

    哈希表: 特点: 数组(顺序表):寻址容易 链表:插入与删除容易 哈希表:寻址容易,插入删除也容易的数据结构,也就...

  • python中的树数据结构

    线性数据中的典型顺序表和链表已经讲完: 《顺序表数据结构在python中的应用》 《python实现单向链表数据结...

  • 从零开始学数据结构和算法(四)哈希表的思想和二叉树入门

    哈希表 特点 数组(顺序表):寻址容易 链表:插入与删除容易 哈希表:寻址容易,插入删除也容易的数据结构 Hash...

  • 链表相关问题整理

    1、比较顺序表和链表的优缺点, 说说它们分别再什么场景下使用? 顺序表存储(典型的数组) 原理:顺序表存储是将数据...

网友评论

      本文标题:数据结构(三)顺序表和链表的优缺点(区别、特点)

      本文链接:https://www.haomeiwen.com/subject/nmxqiqtx.html