【数据结构与算法】单链表、双链表和循环单链表中头指针未知的情况下能否删除某节点

在单链表、双链表和循环单链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点p从相应的链表中删去?为什么?若可以,其时间复杂度各为多少?


单链表:不能

在单链表中,需要知道p的前一个结点,才能更改其指向,跳过p结点,实现删除。因为不知道直接前驱,无法删除该节点。

双链表:可以

在双链表中,每个结点都有一个指向前一个结点的指针,因此可以直接找到p的前一个结点,然后将p的直接前驱指向p的直接后继,即可删除p。

cpp 复制代码
p->prior->next=p->next
p->next->prior=p->prior

时间复杂度:O(1)

循环单链表:可以

先沿着循环链表找到p的直接前驱,将p的直接前驱指向p的直接后继即可删除p。因为要沿着循环链表找到p的直接前驱,即遍历一遍链表,时间复杂度为O(n)。

时间复杂度:O(n)

相关推荐
AI科技星7 分钟前
时空的几何本源与物理现象的建构:论统一场论的宇宙二元论与观察者中心范式
人工智能·线性代数·算法·矩阵·数据挖掘
CelestialYuxin37 分钟前
A.R.I.S.系统:YOLOx在破碎电子废料分拣中的新探索
人工智能·深度学习·算法
_ziva_42 分钟前
YOLO 目标检测算法深度解析:从原理到实战价值
算法·yolo·目标检测
Jason_Honey21 小时前
【蚂蚁金服Agent算法岗一面】
人工智能·算法·自然语言处理·面试
weixin_477271691 小时前
《老子》一书作者“李耳”简介
算法·图搜索算法
智算菩萨1 小时前
交错多模态内容生成:从“单张图“到“图文混排长文“的创作范式变革
人工智能·算法·aigc
Flying pigs~~1 小时前
机器学习之KNN算法
算法·机器学习·大模型·knn·k近邻算法·大数据处理
Navigator_Z1 小时前
LeetCode //C - 962. Maximum Width Ramp
c语言·算法·leetcode
m0_672703311 小时前
上机练习第29天
算法
兩尛1 小时前
409. 最长回文串
c++·算法·leetcode