数组和链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、数组

数组是多个相同数据类型的数据按照一定顺序排列的组合, 并使用一个名字命名, 并通过编号的方式对这些数据进行统一管理。

数组中的元素在内存中都是相连的, 而且数组的内存空间是固定的, 所以数组的长度一旦确定就不能修改

这引发的问题是: 每当我们需要给数组增加长度添加新元素时, 只能让系统重新分配内存空间。 于是我们需要在一开始就设置足够的数组长度, 但是这可能导致数组空间浪费, 或者长度仍然不够的问题。

但是链表可以解决这一点。

并且, 当我们尝试在数组中间插入元素的时候, 必须将后面的元素都向后移。如果没有足够的空间,还得将整个数组复制到其他地方, 重新分配内存空间。


二、链表

链表中的元素是随机分布的, 或者说链表中的元素可以存储在内存的任何地方, 所以插入元素很方便, 只需修改 它前面的那个元素指向的地址。

链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。

但是当我们需要随机读取元素时, 比如要寻找数组或者链表的第五个元素, 由于我们可以依赖数组的下标[索引],可以迅速找到数组的任何元素。

但是,我们不知道链表元素的地址,所以我们只能先访问第一个元素以获取第二个元素的地址,再访问第二个元素以获取第三个元素 的地址,以此类推,直到访问第五个元素。

所以当需要随机读取元素时,使用链表就变得十分麻烦。


三、对比

数组链表
读取O(1)O(n)
插入O(n)O(1)
删除O(n)O(1)

对于频繁插入元素或者删除元素的操作, 使用链表更快。
如果需要频繁读取元素, 使用数组更快。


总结

顺序访问 --> 链表
随机访问 --> 数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Natsume701

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

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

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

打赏作者

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

抵扣说明:

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

余额充值