数组还是链表
约 10 分钟
两种线性结构各有所长,选哪个看你主要做什么操作。
按位置取第 个:数组一步到位 (下标直接算地址),链表得从头数过去 。
中间插入 / 删除:链表只改几条指针 (前提是已经站在那个位置),数组要挪动后面一大片元素 。
| 操作 | 数组 | 链表 |
|---|---|---|
| 按下标访问 | ||
| 中间插入/删除 | ||
| 连续内存 | 是 | 否 |
所以:频繁在中间插入删除,用链表;频繁按下标随机访问,用数组。
考试提示:(1)「已经站在那个位置」很关键——如果每次插入前还得先 找位置,链表的 优势就打折了;(2)数组还有缓存友好、常数小的隐性优势,数据量不大时往往更快;(3)STL 里 vector 是数组、list 是双向链表,按需选用。
小纸条
频繁在中间插入,该用哪个?
登录 后可看答案