顺序表和链表各自的优缺点

顺序表是将数据元素放到一块开辟的连续存储空间,相邻元素的逻辑地址也相邻(逻辑与物理统一)

在上面的图片中可以看到顺序表是在堆中是一块连续的内存空间

优点:1.空间利用率高(连续存放,命中率高)
2.查询可以通过索引直接查找,非常便利(随机访问)
缺点:1.插入和删除比较慢,每次插入都需要遍历元素来找到适当的位置进行插入和删除,
2.插入时需要判断是否需要扩容,扩容时会有额外的空间需求
3.存储的元素过多时要进行扩容,存储的元素过少时会造成额外的空间浪费,例如你的array.length=100,但是实际有效元素size=5,只有5个,剩下的空间无法利用起来,会造成空间浪费
在这里插入图片描述

从上面的图片可以看到链表并不是连续存储的,而是随机存放的,通过它的next域链接每个节点

链表是程序运行过程中动态的空间分配,只要存储器内存够用,就不会出现空间溢出的现象,相邻数据元素可随意存放
优点:1.插入和删除元素比较快,只需要改变相应元素的next域的指向
2.没有空间限制,存放元素比较自由,只要存储器有空间,就不会出现溢出问题,不用考虑扩容问题
缺点:1.不能随机访问,查找时需要从头遍历链表查找某个元素
2.需要占用额外的空间去存储next域。

在使用时如何去选择使用顺序表还是链表?
我们可以结合两者各自的优缺点去选择是使用链表还是顺序表
使用顺序表的一般情况:
1.需要频繁的去查找访问元素
2.事先知道顺序表的长度,并且需要不断的去查找或者访问元素,可以使用顺序表
使用链表的一般情况:
1.需要频繁的去进行增加和删除操作,对于链表来说进行这样的操作开销很小,这个时候可以选择链表
2.当不知道存储数据是多少时,为了防止不断的扩容和空间浪费,此时也可以选择链表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值