数组 vs 链表
核心一句话
数组连续内存,随机访问快,增删慢;链表不连续,随机访问慢,增删快。
1. 存储结构
- 数组:连续内存空间,元素依次紧密排列
- 链表:离散内存,每个节点存数据+下一个节点地址,靠指针串联
2. 访问效率(时间复杂度)
- 数组:支持随机访问,
O(1) - 链表:只能顺序遍历,
O(n),不能直接通过下标找元素
3. 插入 & 删除
- 数组:中间插入/删除要移动大量元素,
O(n);末尾增删快 - 链表:只需修改指针,
O(1)(前提找到节点),不用移动元素
4. 内存开销
- 数组:开销小,只存数据
- 链表:开销大,每个节点多存指针,占用更多内存
5. 扩容
- 数组:固定容量,扩容需要重新申请更大内存、拷贝数据
- 链表:动态分配,按需创建节点,无扩容问题
6. 优缺点总结
数组
优点:查询快、内存连续缓存友好、简单
缺点:增删慢、长度固定、扩容麻烦
链表
优点:增删快、动态扩容、无碎片
缺点:查询慢、占用额外指针空间、缓存命中率低
7. 适用场景
- 数组:查询多、增删少、长度基本固定(如缓存、查找类)
- 链表:频繁插入删除、数据量变化大(如栈队列、LRU缓存)
1406

被折叠的 条评论
为什么被折叠?



