如何判断一个链表是否是循环链表

dreamhunter_lan 2011-10-08 04:15:47
如题。用快慢指针貌似只能判断是否有环。
...全文
1806 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
七擒关羽 2011-10-09
  • 打赏
  • 举报
回复
首先一个链表是否循环是是否成环形,并且只有一个环形,没有死环
有这个前提就简单了,这个算法就是追逐问题了,具体算法的效率要看设计了
设该链表的长度为N:
1、一个指针,步长为1,经过n就可以判断出来
2、双指针,一个步长为1,一个步长为2,经过最多n3/4就可以判断出来
3、。。。。自己想吧
商科程序员 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 dreamhunter_lan 的回复:]
如题。用快慢指针貌似只能判断是否有环。
[/Quote]判断循环链表直接从头向下遍历就行了(如果有尾,则不是;如果有节点等于head,则是).用快慢指针是判断链表是否有环.
veryfd 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dreamhunter_lan 的回复:]

引用 2 楼 veryfd 的回复:

初始化两个指针指向链表首节点,一个每次向后跳一个节点,另一个每次向后跳两个节点,依次循环

每次判断两个指针的地址值,如果出现了相等的情况那么表示链表中存在环,如果某个指针指向了链表尾或者空值,那么该链表中不存在环

我都说了用快慢指针可以判断是否有环~~但是有环就叫循环链表吗?
[/Quote]那不是更简单了?直接不用快慢指针,就一个个节点遍历,如果最后访问到了尾节点或者空值,那么就不是循环链表,如果存在和首地址相同的指针,那么就存在循环?
xiao452159568 2011-10-09
  • 打赏
  • 举报
回复
请楼主解释一下循环链表和有环链表的区别
wxwlll 2011-10-08
  • 打赏
  • 举报
回复
看尾指针指向的地址,与首地址比较!
chenlei140 2011-10-08
  • 打赏
  • 举报
回复
看是否有取模 取模则就是环
星羽 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dreamhunter_lan 的回复:]

引用 2 楼 veryfd 的回复:

初始化两个指针指向链表首节点,一个每次向后跳一个节点,另一个每次向后跳两个节点,依次循环

每次判断两个指针的地址值,如果出现了相等的情况那么表示链表中存在环,如果某个指针指向了链表尾或者空值,那么该链表中不存在环

我都说了用快慢指针可以判断是否有环~~但是有环就叫循环链表吗?
[/Quote]

你判断一下环出现的地方是否在头节点
taodm 2011-10-08
  • 打赏
  • 举报
回复
循环链表怎么定义的?
dreamhunter_lan 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 veryfd 的回复:]

初始化两个指针指向链表首节点,一个每次向后跳一个节点,另一个每次向后跳两个节点,依次循环

每次判断两个指针的地址值,如果出现了相等的情况那么表示链表中存在环,如果某个指针指向了链表尾或者空值,那么该链表中不存在环
[/Quote]
我都说了用快慢指针可以判断是否有环~~但是有环就叫循环链表吗?
Indifferent_Wind 2011-10-08
  • 打赏
  • 举报
回复
看看最后一个节点是否为NULL
veryfd 2011-10-08
  • 打赏
  • 举报
回复
初始化两个指针指向链表首节点,一个每次向后跳一个节点,另一个每次向后跳两个节点,依次循环

每次判断两个指针的地址值,如果出现了相等的情况那么表示链表中存在环,如果某个指针指向了链表尾或者空值,那么该链表中不存在环
chhch11111 2011-10-08
  • 打赏
  • 举报
回复
尾节点的指针指向头结点不就是循环链表了么

70,023

社区成员

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

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