数据结构-链表

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)。

相关推荐
by2099921 分钟前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
Code_Solitude1 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
Pniubi2 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
lojox3 小时前
C++ 手写 STL list(双向循环链表)原理剖析与实现
c++·链表·list
inrichtt12 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger13 小时前
数据结构——选择排序
数据结构·算法·排序算法
丑梨数据13 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
烂蜻蜓14 小时前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
CS创新实验室21 小时前
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
数据结构·算法·红黑树·408·计算机考研
Logic10121 小时前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度