线性表的链式存储结构与顺序存储结构(链表和数组)的区别及优缺点

线性表的链式存储结构与顺序存储结构(链表和数组)的区别及优缺点

参照《大话数据结构》整理:

顺序存储结构:

优点:

  • 无须为表示表中元素之间的逻辑关系而增加额外的存储空间
  • 可以快速的存取表中任一位置的元素 O(1)

缺点:

  • 插入和删除操作需要移动大量元素 O(n)
  • 当线性表长度变化较大时,难以确定存储空间的容量
  • 造成存储空间的“碎片”

二者对比

存储分配方式
顺序存储结构用一段连续的存储单元依次存储线性表的数据元素
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素
时间性能查找插入和删除
顺序存储结构O(1)需要平均移动表长一半的元素 O(n)
单链表O(n)在找出某位置的指针后,插入和删除的时间复杂度为 O(1)
空间性能
顺序存储结构需要预分配存储空间,分大了->浪费,分小了->易发生上溢
单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制

适用场景:

  • 数组: 元素个数变化不太大,需要频繁查找(存取),很少进行插入和删除操作时。
  • 链表: 元素个数变化较大或者根本不知道有多大时,插入或删除数据频繁,


之前整理的,与前文意思相同,但上文更精炼 -> 以下可不看

​ 区别:
​ (1)内存:数组静态分布内存,链表动态分布内存;
​ 数组在内存中是连续的,链表不连续;
​ (2)复杂度:
​ ①查找时:
​ 数组利用索引定位,查找的时间复杂度是O(1),
​ 链表通过遍历定位元素,查找的时间复杂度是O(n);
​ ② 插入和删除:
​ 数组插入和删除要移动其他元素, 时间复杂度是O(n),
​ 链表的插入和删除不需要移动其他元素, 时间复杂度是O(1);
数组的优缺点:
​ (1)优点:
​ 复杂度: 随机访问性比较强,可以通过下标进行快速定位。查找速度快
​ (2)缺点:
​ 内存: ①会造成内存的浪费. 因为内存是连续的,所以在创建数组的时候必须规定其大小,如果不合适,就会造成内存的浪费。
​ ②内存空间要求高. 创建一个数组,必须要有足够的连续内存空间。
​ ③数组的大小是固定的,在创建数组的时候就已经规定好,不能动态拓展, 如果要扩容, 需要重新分配一块更大的空间, 再把所有数据全部复制过去.
​ 复杂度: ④插入和删除的效率低,需要移动其他元素。
链表的优缺点:
​ (1)优点:
​ 内存: ①内存利用率高,不会浪费内存,可以使用内存中细小的不连续的空间,只有在需要的时候才去创建空间。大小不固定,拓展很灵活。
​ 复杂度: ②插入和删除的效率高,只需要改变指针的指向就可以进行插入和删除。
​ (2)缺点:
​ 内存: ①由于每个元素必须存储指向前后元素位置的指针, 会消耗相对更多的存储空间.
​ 复杂度: ②查找的效率低,因为链表是从第一个节点向后遍历查找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心海非海_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值