数组和链表的区别

数组 vs 链表

核心一句话

数组连续内存,随机访问快,增删慢;链表不连续,随机访问慢,增删快。

1. 存储结构

  • 数组连续内存空间,元素依次紧密排列
  • 链表离散内存,每个节点存数据+下一个节点地址,靠指针串联

2. 访问效率(时间复杂度)

  • 数组:支持随机访问O(1)
  • 链表:只能顺序遍历O(n),不能直接通过下标找元素

3. 插入 & 删除

  • 数组:中间插入/删除要移动大量元素O(n);末尾增删快
  • 链表:只需修改指针O(1)(前提找到节点),不用移动元素

4. 内存开销

  • 数组:开销小,只存数据
  • 链表:开销大,每个节点多存指针,占用更多内存

5. 扩容

  • 数组:固定容量,扩容需要重新申请更大内存、拷贝数据
  • 链表:动态分配,按需创建节点,无扩容问题

6. 优缺点总结

数组

优点:查询快、内存连续缓存友好、简单
缺点:增删慢、长度固定、扩容麻烦

链表

优点:增删快、动态扩容、无碎片
缺点:查询慢、占用额外指针空间、缓存命中率低

7. 适用场景

  • 数组:查询多、增删少、长度基本固定(如缓存、查找类)
  • 链表:频繁插入删除、数据量变化大(如栈队列、LRU缓存)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ricky_Theseus

感谢大家,祝您生活愉快

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

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

打赏作者

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

抵扣说明:

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

余额充值