社区
C语言
帖子详情
如何判断一个链表是否是循环链表
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
打赏
举报
回复
尾节点的指针指向头结点不就是循环链表了么
判断
一个
链表
是否为
循环
链表
(1)采用快慢指针法,定义两个指针,同时从
链表
的头节点出发,
一个
指针一次走一步,另
一个
指针一次走两步。如果走得快的指针追上了走得慢的指针,那么
链表
就是环形
链表
;如果走得快的指针走到了
链表
的末尾(next指向 ...
判断
是否
循环
链表
实际上
判断
一个
链表
是否是
循环的思路很简单,困扰我的反而是“带环
链表
是否就是
循环
链表
”这个问题,穿梭于各中帖子、书本寻找答案终究找不到明确说明。《大话数据结构》中
循环
链表
的定义为:“将单
链表
中终端节点的...
判断
一个
链表
是
循环
链表
它的特点是表中最后
一个
结点的指针域指向头结点,整个
链表
形成
一个
环。 如果去遍历
循环
链表
,则是死循环。 这里
判断
循环
链表
的方法是; 用两个指针,
一个
指针是块指针(跳
一个
节点遍历),遍历快(p=p->netxt-&...
leetcode 141
判断
一个
链表
是否是
循环
链表
leetcode 141 要求:
判断
一个
链表
是否是
循环
链表
思路:给两个指针,
一个
跑的快,
一个
跑得慢,如果快的和慢的能相遇,则是
循环
链表
,否则不是.
c语言
判断
链表
是否为
循环
链表
普通
链表
与
循环
链表
的区别在于:普通
链表
的最后
一个
节点指向为NULL,而
循环
链表
最后
一个
节点指向该
链表
中的任意
一个
节点,如同
一个
环。
循环
链表
问题引出了
一个
在
链表
中很重要的概念:快、慢指针。快、慢指针可以帮助...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章