数据结构 - 链表和数组的区别

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 数据结构 - 链表和数组的区别

@[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、为什么使用较常用的是单头链表

为什么大多数情况下单头链表比双头链表用的更多,虽然双头链表更具有优势,因为双头链表需要比单头链表更大的内存空间
而一般情况下,我们会选择用时间换空间

相关文章
|
15小时前
|
存储
数据结构第二课 -----线性表之单向链表
数据结构第二课 -----线性表之单向链表
|
15小时前
|
存储
序表和链表的区别(通俗易懂)
序表和链表的区别(通俗易懂)
14 2
|
15小时前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
11 0
|
15小时前
|
存储 Java
深入浅出数据结构之链表
深入浅出数据结构之链表
|
15小时前
|
存储 索引
深入浅出数据结构之数组
深入浅出数据结构之数组
|
15小时前
|
C++
数据结构(双链表
数据结构(双链表
9 1
|
15小时前
|
算法 测试技术 C++
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
|
15小时前
|
存储 缓存
[数据结构]~双向+循环链表从(0~1)
[数据结构]~双向+循环链表从(0~1)
|
15小时前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
20 0
|
15小时前
|
存储
数据结构第三课 -----线性表之双向链表
数据结构第三课 -----线性表之双向链表

热门文章

最新文章