当前位置:网站首页>顺序表和链表的优缺点及总结
顺序表和链表的优缺点及总结
2022-07-22 23:28:00 【Demon--hx】
目录
计算机中主要有两种基本的存储结构用于存放线性表:顺序存储结构和链式存储结构
一、顺序表
顺序表的优点:
1、顺序表的本质是数组,物理空间是连续的。
2、可以下标随机访问。
3、尾插尾删效率高,不需要挪动数据,时间复杂度是O(1)。
4、cpu高速缓存命中率高。
顺序表的缺点:
1、当空间不够时需要扩容,扩容有一定的性能消耗,一般是扩容2倍,但也存在一定的空间浪费
2、头部或中间位置插入删除效率低下,需要挪动数据,时间复杂度是0(n)。
二、链表
链表有多种结构,实际中最常用的是无头单向非循环链表和带头双向循环链表。
无头单向非循环链表的优点:
1、可以按需申请和释放空间,不用考虑空间不够问题。
2、头部和中间位置插入删除效率高,不需要挪动数据。
无头单向非循环链表缺点:
1、不支持随机访问,查找元素效率低下。
2、对链表中间或者尾部位置插入删除,需要遍历结点,时间复杂度是0(n)。
带头双向循环链表的优点:
1、可以按需申请和释放空间,不用考虑空间不够问题。
2、任意位置插入删除的时间复杂度是0(1)。
带头双向循环链表的缺点:
1、不支持下标随机访问。
总结:
1、链表的本质是针对顺序表的缺点设计的,因此在不同情况下可以选择不同的存储结构
2、如果线性表的主要操作是查找,很少做插入或删除操作,可以选择顺序表作为存储结构。
3、如果线性表要频繁进行插入或删除操作,可以选择链表作为存储结构。
4、无头单向非循环链表一般不会单独用来存放数据,实际中更多是作为其他数据结构的子结构,例如哈希桶、图的邻接矩阵。
5、带头双向循环链表一般用在单独存放数据,也是实际中常用的链表数据结构。
边栏推荐
猜你喜欢
随机推荐
Swift - 标红的修饰词
DP+回溯分割回文串的系列问题
Web3流量聚合平台Starfish OS,给玩家元宇宙新范式体验
What is NFT? You don't know yet!
Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议
Add payment method after successful registration of Alibaba cloud international edition
【wepy2.0】的安装
深度解析kube-scheduler调度上下文
Flynk uses liststate to implement keyedstate
构造函数的初始化、清理及const修饰成员函数
Qgraicsview implementation palette
数据分析与隐私安全成 Web3.0 成败关键因素,企业如何布局?
Flick enables mapstate to implement keyedstate
【超全整理】思科和华为命令对比备忘录,拿走不谢!随时随地可查看
小红书携手HMS Core,畅玩高清视界,种草美好生活
浅谈——网路安全架构设计(一)
Several ways of QT thread exit
浅谈——网络安全架构设计(三)
Redistemplate pipeline use
算法---使用最小花费爬楼梯(Kotlin)









