• 顺序表和链表的优缺点总结


    引言

    顺序表和链表都属于线性表,它们都是用来存储数据的结构。
    线性表:零个或多个数据元素的有限序列。
    顺序表即表示线性表的顺序存储,链表即表示线性表的链式存储。

    顺序表

    顺序表:顺序表底层是一个数组,它在逻辑上和物理结构上都是连续的。因为我们可以按照下标进行各种操作,每个元素都是连续存放的。

    顺序表查找指定位置的时间复杂度为:O(1)
    中间插入、中间删除的时间复杂度为:O(n)
    头插、头删的时间复杂度为:O(n)
    尾插、尾删的时间复杂度为:O(1)

    链表

    链表:链表是一个由若干节点组成的结构,它在逻辑上是连续的,但在物理结构上是非连续的,或者说,内存上不是紧挨着的。

    链表查找的时间复杂度为:O(n)
    链表在找到指定元素的位置后,插入和删除操作的时间复杂度为:O(1)

    单链表在插入和删除操作时,需要找到前驱域,这也是较为麻烦的。
    而双向链表的插入和删除操作效率就较为高效,因为双向链表中的每个节点不仅存储了后继域,也存储了前驱域。但显然,双向链表是利用了更多的空间换取了时间。

    一、两者的优缺点

    1. 顺序表的优点

    (1)顺序表可以通过索引(下标)快速地访问表中元素

    2. 顺序表的缺点

    (1)顺序表的插入和删除操作,会使得表中的大量元素进行移动,效率较低。
    (2)顺序表在面对扩容问题的时候,比较繁琐。当顺序表放满的时候,我们需要进行扩容。而扩容的大小需要面对不同的情况,选择不同的大小,若扩容的容量较大,那么会使得空间利用率较低;若扩容的容量较小,在后续的代码执行过程中,又需要不断地扩容操作,这使得代码变得更加繁琐。

    3. 链表的优点

    (1)链表的插入和删除操作的效率较高,可以把通过地址直接改变节点的指向。
    (2)链表不需要考虑扩容问题。

    4. 链表的缺点

    (1)链表在查找元素的时候,执行效率较低,需要从头开始,依次往后找。

    二、如何选择

    (1)若我们存储数据的时候,在后续的操作中,需要对数据进行频繁查找,很少进行插入和删除操作时,宜采用顺序表。

    (2)若我们存储数据的时候,在后续的操作中,我们无法确定数据个数的变化,或者说,数据元素在某次操作中,个数变化较大,宜采用链表,因为链表不需要考虑存储空间大小的问题。

  • 相关阅读:
    SpringBoot使用
    自动跟踪太阳光电路设计
    如何使用AI图片清晰度增强器软件增强和锐化图片、提高照片清晰度并去除噪点
    计算几何(待填坑)
    MySQL索引优化实战
    RocketMQ 发送顺序消息
    leetcode46、47、31 全排列、下一个排列(非递归解法,减少空间复杂度)
    Java AOP篇
    怎么复习信息系统项目管理师?
    社科院与杜兰大学能源管理硕士项目——惊喜会随时间慢慢酝酿而出
  • 原文地址:https://blog.csdn.net/lfm1010123/article/details/125381778