数据结构-链表

1.操作链表的时间复杂度

1.1 单向链表

链表每一元素成为节点(Node);是一种物理存储单元上非连续、非顺序的数据结构

单向链表data是用来存储数据的数据域,next(后继指针)是存储下一个节点地址的指针域

1.1.1 单向链表查询操作时间复杂度

1.1.1.1 查头结点时,不需要遍历链表,时间复杂度为O(1);

1.1.1.2 查询其他节点时,都需要从头开始遍历链表,时间复杂度为O(n)。

1.1.2 单向链表新增、删除操作时间复杂度

1.1.2.1 新增、删除头结点时,不需要遍历链表,时间复杂度为O(1);

1.1.2.2 新增、删除查询其他节点时,都需要从头开始遍历链表,定位到目标位置,时间复杂度为O(n)。

1.2 双向链表

支持两个方向

每个节点有两个指针,prev前驱指针指向前一个结点,next后继指针指向后一个结点

对比单向链表:需要额外一个空间来存储前驱指针prev,所以比单向更占空间;但是双向链表比单向更灵活支持双向遍历

1.2.1 双向链表查询操作时间复杂度

查询头尾节点时间复杂度是O(1);查询其他节点时,时间复杂度为O(n);给定节点查询前节点只需要用prev,所以时间复杂度是O(1)。

1.2.2 双向链表新增、删除操作时间复杂度

增删头尾节点,有first、last,时间复杂度是O(1);增删其他节点时,时间复杂度为O(n);给定节点增删,时间复杂度是O(1)。

相关推荐
锅挤1 小时前
数据结构复习(第四章):串
数据结构
历程里程碑1 小时前
二叉树---翻转二叉树
开发语言·c++·elasticsearch·链表·搜索引擎·tornado·dash
XS0301061 小时前
数据结构-哈夫曼树,红黑树,B树
数据结构·b树
爱吃桃子的ICer3 小时前
m1_pcie
数据结构
贾斯汀玛尔斯3 小时前
每天学一个算法--堆排序(Heap Sort)
数据结构·算法
programhelp_3 小时前
ZipRecruiter CodeSignal OA 2026|最新真题分享 + 速通攻略
数据结构·经验分享·算法·面试
绿豆人4 小时前
go语言的Reflect包
java·开发语言·数据结构
liuyao_xianhui4 小时前
map和set_C++
java·开发语言·数据结构·c++·算法·宽度优先
脱氧核糖核酸__5 小时前
LeetCode热题100——41.缺失的第一个正数(题解+答案+要点)
数据结构·c++·算法·leetcode·哈希算法
努力努力再努力wz5 小时前
【MySQL入门系列】:不只是建表:MySQL 表约束与 DDL 执行机制全解析
android·linux·服务器·数据结构·数据库·c++·mysql