数据结构和算法-数组和链表

142 阅读1分钟

抽象源头

从计算机内存这个层次来看,用户申请的内存空间只有两种划分规则:连续和非连续,这恰恰对应了数组和链表的内存申请特性,这不是一种巧合,事实是数组和链表是计算机内存最基本的抽象。

其他的数据结构,可以说都是对数组和链表的进一步抽象,都可以使用数组和链表来实现。

优缺点比较

数组的优点即为链表的缺点,链表的优点即为数组的缺点。

优点缺点
数组随机访问空间固定,需要手动扩容
链表天然支持自动扩容不支持随机访问

很多高级数据结构,会同时使用数组和链表,充分发挥各自的优点,规避各自的缺点

算法比较

查找插入删除随机访问
数组O(n)O(n)O(n)O(1)
链表O(n)O(1)O(1)不支持