@[toc]
数据结构 - 链表和数组的区别
1、在内存上
数组是连续内存,因为是静态分配,所以不可扩容
链表是非连续内存,动态分配,也没有顺序,它通过链表中的 next 指针保存逻辑顺序
2、时间复杂度
查找时间复杂度
1、数组使用下标定位,1次就可以找到 ,O(1)
2、链表需要循环去找,最大需要N次,O(N)
插入删除时间复杂度
1、数组插入删除需要移动其它元素,复杂度 O(N)
2、链表插入删除不需要移动其它元素,复杂度 O(1)
3、链表的结构
常用的链表结构有两种
1、只带有 next 指针的单头链表
2、既带有 next 指针,又带有父指针的双头链表
4、各自的优缺点
数组优缺点
优点
1、查找速度快
缺点
1、数组插入删除效率低
2、内存连续,容易造成内存碎片
3、不能动态扩容
链表优缺点
优点
1、插入删除效率高
缺点
1、查找效率低
5、为什么使用较常用的是单头链表
为什么大多数情况下单头链表比双头链表用的更多,虽然双头链表更具有优势,因为双头链表需要比单头链表更大的内存空间
而一般情况下,我们会选择用时间换空间