数据结构-链表

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

相关推荐
未若君雅裁2 小时前
算法复杂度与数据结构:Java 集合篇的第一块基石
java·数据结构·算法
故事和你913 小时前
洛谷-【动态规划2】线性状态动态规划4
开发语言·数据结构·c++·算法·动态规划·图论
小欣加油5 小时前
leetcode 3300 替换为数位和后的最小元素
数据结构·c++·算法·leetcode
晚风予卿云月5 小时前
【枚举】普通枚举
数据结构·c++·算法·竞赛·算法随笔
不会就选b5 小时前
数据结构之顺序表
数据结构
z落落5 小时前
C# Hashtable 哈希表+SortedList 有序键值对集合
数据结构·散列表
Brilliantwxx5 小时前
【C++】 深入理解红黑树:实现与原理全解
数据结构·c++·笔记·算法·青少年编程·红黑树
Dlrb12116 小时前
数据结构-排序算法
数据结构·算法·排序算法·插入排序·堆排序·希尔排序·快速排序
过期动态6 小时前
【LeetCode 热题 100】无重复字符的最长子串
java·数据结构·spring boot·算法·leetcode·职场和发展
莫等闲-7 小时前
leetcode42. 接雨水 leetcode84.柱状图中最大的矩形
数据结构·c++·算法·leetcode