究根结底,两种数据结构的不同是因为在存储上物理地址是否连续导致。 因为数组存储的时候,物理地址必须连续,所以查询效率高,而插入删除效率低, 且存储数组结构需预先占用固定的内存,会造成不必要的内存浪费。 而链表中元素存储的物理地址不必连续,这就造成了两种数据结构的不同点。
数组的优点
- 随机访问性强
- 查找速度快
数组的缺点
- 插入和删除效率低
- 可能浪费内存
- 内存空间要求高,必须有足够的连续内存空间。
- 数组大小固定,不能动态拓展
链表的优点
- 插入删除速度快
- 内存利用率高,不会浪费内存
- 大小没有固定,拓展很灵活。
链表的缺点
- 不能随机查找,必须从第一个开始遍历,查找效率低
数组 | 链表 |
---|---|
读取 O(1) | O(n) |
插入 O(n) | O(1) |
删除 O(n) | O(1) |