25考研数据结构复习·2.4顺序表V.S.链表

本文比较了顺序表和链表在逻辑结构、存储结构以及基本操作上的差异,强调了顺序表的随机存取和高存储密度,以及链表的动态分配优势。讨论了它们在空间分配、容量调整和时间复杂度上的特点,为数据结构选择提供参考。
摘要由CSDN通过智能技术生成
  • 逻辑结构

    都属于线性表,都是线性结构

  • 物理结构/存储结构

    顺序表:

    优点:随机存取、存储密度高

    缺点:大片连续空间分配不方便,改变容量不方便

    链表:

    优点:离散的小空间分配方便,改变容量方便

    缺点:不可随机存取,存储密度低

  • 数据的运算/基本操作

      • 顺序表

        需要预分配大片连续空间。

        若分配空间过校,则之后不方便拓展容量;若分配空间过大,则浪费内存空间

        静态分配:静态数组(容量不可改变)

        动态分配:动态数组(malloc、free)(容量可以改变,但需要移动大量元素,时间代价高)

      • 链表

        只需分配一个头结点(也可以不要头结点,只声明一个头指针),之后方便拓展

    • 顺序表

      修改Length = 0

      静态分配:静态数组(系统自动回收空间)

      动态分配:动态数组(malloc、free)(需要手动free)

      typedef struct{
      		ElemType *data;
      		int MaxSize;
      		int length;
      }SeqList;
      //malloc 和 free必须成对出现
      L.data = (ElemType *)malloc(sizeof(ElemType)*InitSize);
      free(L.data);
      
    • 链表

      依次删除各个结点(free)

  • 增删

    • 顺序表

      插入/删除元素要将后续元素后移/前移

      时间复杂度O(n)

      时间开销主要来自移动元素

    • 若数据元素很大,则移动的时间代价很高

    • 链表

      插入/删除元素只需修改指针即可

      时间复杂度O(n)

      时间开销主要来自查找目标元素

                查找元素的时间代价更低 

    • 顺序表

      按位查找:O(1)

      按值查找:O(n) 若表内元素有序,可在O(log₂n)时间内找到

    • 链表

      按位查找:O(n)

      按值查找:O(n)

  • 如何抉择

    顺序表链表
    弹性(可扩容)😭😃
    增、删😭😃
    😃😭
  • 知识回顾与重要考点

📝 开放式问题的答题思路:

❓ 请描述顺序表和链表的… … 实现线性表时,用顺序表还是链表好?

❗   顺序表和链表的逻辑结构都是线性结构,都属于线性表。

        但是二者的存储结构不同,顺序表采用顺序存储…(特点,带来的优缺点);链表采用链式存储…(特点,导致的优缺点)。

        由于采用不同的存储方式实现,因此基本操作的实现效率也不同。当初始化时…;当插入一个数据元素时…;当删除一个数据元素时…;当查找一个数据元素时…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值