A. 线性数据结构
1. 链表
- 特点:数据分散存储,每个数据都有一个“指针”
pointer
,指向下一个数据的内存地址。 - 优点:
添加和删除数据
只需要改变该位置前后的指针指向,时间复杂度为O(1)。 - 缺点:
线性查找
要从链表的头部开始,顺着指针的指向往下做顺序访问
,时间复杂度为O(n)。
双向链表
- 优点:可以从前往后和从后往前遍历数据
- 缺点:添加和删除数据时需要改变更多指针的指向
2. 数组
- 特点:数据按顺序存储在内存的连续空间内,每个数据的
内存地址
都可以通过数组下标
算出 - 优点:访问目标数据可以借助
数组下标
直接计算内存地址(“随机访问”
),时间复杂度为O(1)。 - 缺点:添加和删除数据,需要将后面的元素后移或前移,时间复杂度为O(n)。
访 问 | 添加、删除 | |
---|---|---|
链表 | 慢 | 快 |
数组 | 快 | 慢 |