- 在内存存储 方面:数组是连续的,链表是分散的;
- 在是否预留额外空间 方面:数组需要使用前申请内存大小,链表对每个数据项都保存了下一个数据的内存地址;
- 在访问方式 方面:数组支持随机访问,链表只能顺序访问;
- 在增加、删除 方面:数组待增加、删除的节点后面的元素需要依次移动,效率低;链表只需要改变节点中的“指针”,局部数据改写就可以了,效率更高。
- 在操作系统内存管理 方面:内存管理会将连续的存储空间提前读入缓存(局部性原理),所以数组往往会被读入缓存中,进一步提高了访问效率;链表由于内存分布式分散的,往往不会读入到缓存中,其访问效率本来就低,这样就变得更低了。
- 在实际应用 方面:链表带来的动态扩容的便利性,在作为算法的容器方面,用的更普遍一点。
![2](https://img2020.cnblogs.com/blog/1198974/202109/1198974-20210929145104418-1784372872.png)