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

在单链表、双链表和循环单链表中,若仅知道指针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)

相关推荐
罗湖老棍子3 分钟前
宠物小精灵之收服(信息学奥赛一本通- P1292)
算法·动态规划·01背包
LDG_AGI10 分钟前
【推荐系统】深度学习训练框架(十四):特征映射——Murmur哈希:高效“无状态”转换
人工智能·深度学习·算法·机器学习·哈希算法·推荐算法
Jing_Rainbow11 分钟前
【LeetCode Hot 100 刷题日记(22/100)】160. 相交链表——链表、双指针、哈希表📌
算法·面试·程序员
兩尛18 分钟前
HJ98 喜欢切数组的红(dp
算法
adam_life20 分钟前
【P4551 最长异或路径】
算法·bfs·01字典树
Genevieve_xiao26 分钟前
【数据结构】【xjtuse】面向考纲学习(上)
数据结构·学习
一颗宁檬不酸26 分钟前
数据结构:串(String)知识总结
数据结构·
CoovallyAIHub34 分钟前
2025年值得关注的5款数据标注工具
深度学习·算法·计算机视觉
FuckPatience36 分钟前
C# 补码
开发语言·算法·c#
稚辉君.MCA_P8_Java37 分钟前
Gemini永久会员 VB返回最长有效子串长度
数据结构·后端·算法