链表删除尾节点

qiu_shaofeng 2020-07-13 02:36:08
长度为n,仅含有尾指针,带头结点的单循环链表。删除尾节点的复杂度是O(1)还是O(n)?
...全文
610 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiyahh 2021-11-11
  • 打赏
  • 举报
回复 1
学习了一下,发现确实是O(n)。有个人回答的非常有理。 🤔确实单循环链表删除队尾元素都是O(n),因为均需要找到队尾的前驱结点,而找到队尾前驱结点一步是做不到的,均需要遍历。🤔另外好像有一个容易混淆的地方。就是仅设置头指针的循环单链表,查找表尾结点是O(1),删除表尾结点是O(n)。(删除需要找前驱并改变其next域指向,而查找不需要找前驱)
qiu_shaofeng 2020-07-13
  • 打赏
  • 举报
回复
引用 4 楼 自信男孩 的回复:
[quote=引用 3 楼 Simple-Soft 的回复:]因为删除以后,还要把被删除节点的上一个节点执行被删除节点的下一个节点,不能直接删除。必须遍历,因为是单循环
有理~[/quote] 比较有道理
自信男孩 2020-07-13
  • 打赏
  • 举报
回复
引用 3 楼 Simple-Soft 的回复:
因为删除以后,还要把被删除节点的上一个节点执行被删除节点的下一个节点,不能直接删除。必须遍历,因为是单循环

有理~
Simple-Soft 2020-07-13
  • 打赏
  • 举报
回复
因为删除以后,还要把被删除节点的上一个节点执行被删除节点的下一个节点,不能直接删除。必须遍历,因为是单循环
自信男孩 2020-07-13
  • 打赏
  • 举报
回复
知道头,知道尾,并且是一个循环链表,那么删除尾节点不很好处理吗?直接删除不就好了吗?还需要循环遍历一次链表吗?

引用 1 楼 Simple-Soft 的回复:
单循环应该都是N,因为删除任意一个都要遍历
Simple-Soft 2020-07-13
  • 打赏
  • 举报
回复
单循环应该都是N,因为删除任意一个都要遍历

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧