顺序表与链表的不同

顺序表与链表
1.逻辑结构
顺序表与链表的逻辑结构均为线性结构,都属于线性表。

2.存储结构
顺序表是顺序存储,因此其可以随机存取,只要知道顺序表的起始地址,则可以立即找到第i个元素的起始位置。且由于不存储其他冗余信息。
因此顺序表
优点为:可随机存储,存储密度高。
缺点为:大片连续空间分配不方便,改变容量不方便。
链表是链式存储,
优点为:离散的小空间分配方便,改变容量方便。
缺点为:不可随机存取,存储密度低。

3.基本操作
创销、增删改查
创建的不同:
顺序表:需要预分配大片连续空间;若分配空间过小,则之后不方便拓展容量;若分配空间过大,则浪费内存资源;
顺序表采取静态分配创建静态数组,则其容量不可更改。
顺序表若采用动态分配创建动态数组,容量可以改变,但需要移动大量元素,时间代价高。
链表:只需要分配一个头结点,之后方便拓展即可。

销毁的不同:
顺序表:
静态分配:静态数组。则系统自动回收空间。
动态分配:动态数组。需要手动free。
链表:需要对每个结点手动free。

插入删除的不同:
顺序表:插入和删除都要将后续元素后移/前移。时间复杂度为O(n),时间开销主要来自移动元素。
链表:插入和删除元素只需要修改指针即可。时间复杂度为O(n),时间开销主要来自查找目标。
但若数据元素很大,则移动的时间代价很高,如1MB的数据元素移动一次需要10ms,则总时间为10msn,而查找数据元素的时间快得多,且与数据元素的大小无关,通过指针查找元素的时间可能为1us,则总时间为1usn。因此顺序表插入和查找的时间还是大于 链表的时间的。

查找的不同:
顺序表:
按位查找:O(1)
按值查找:若表内元素无序,则查找时间复杂度为O(n)。若表内元素有序,则查找时间复杂度为O( l o g 2 n log_2n log2n)的时间复杂度(可进行二分查找)
链表:
按位查找:O(n)
按值查找:O(n)

在这里插入图片描述
4.顺序表与链表的适用场景
顺序表:表长可预估、查询操作比较多。
链表:表长难以预估、经常要增加/删除元素

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值