关于链表有环是如何判断呢?

daocha 2010-03-08 05:48:22
看了很多 网上大多是解决环形链表或者“6”型链表的方法,我现在要解决的是

-0---0---0---0---0---0---0---0---0---0-
|___________|

类似于这种的带有环的链表, 如何来判断它是否含有环
...全文
328 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
r11222 2010-03-08
  • 打赏
  • 举报
回复
mark……等答案!!
daocha 2010-03-08
  • 打赏
  • 举报
回复
哎 我也不知道 今天面试的时候被问的
cattycat 2010-03-08
  • 打赏
  • 举报
回复
楼主给的例子不对,单链表有环的话,后面直接是个圈,就是6字的形状。
用两个指针,1个每次往前1步,第2个每次向前2步,如果这两个指针最后会相等,说明有环。
就是楼上的代码描述的。
skyygl 2010-03-08
  • 打赏
  • 举报
回复
单链表判断有没有环的情况:
struct Node
{
int data;
Node* next;
};

void Check_Linklist_Circle(Node* temp)
{
Node* head1 = temp;
Node* head2 = temp;
while(head1->next != head2->next->next)
{
head1 = head1->next;
head2 = head2->next->next;
if(head1 == NULL || head2 == NULL)
{
cout<<"链表没有环"<<endl;
return ;
}
}
cout<<"链表有环"<<endl;
}

顺便说一下,楼主你要的这样的链表是不存在的,因为你说的链表中有的结点有两个指针域,有的结点只有一个指针域,这样的链表是不规则的
昵称很不好取 2010-03-08
  • 打赏
  • 举报
回复
引用 1 楼 thefirstz 的回复:
用2个不一样步长的指针,一个每次跑一步,一个每次跑2步,如果跑2步的能追上跑一步的
那就说明有环存在

晕,没看清题意~~
楼主的这种链表不可能存在的~~
next域没法写啊
harpe1999 2010-03-08
  • 打赏
  • 举报
回复
貌似这样是不可以的吧,楼主想想啊,每个节点只有一个next指针,
楼主那里,交汇处存在两个next指针了!!!!
kevinz26 2010-03-08
  • 打赏
  • 举报
回复
lz 这种环的 元素的数据结构是咋样的? 不是单链表也不是双向链表……
昵称很不好取 2010-03-08
  • 打赏
  • 举报
回复
漏说了一句,用这个指针去遍历这个链表
http://www.cppblog.com/humanchao/archive/2008/04/17/47357.html
昵称很不好取 2010-03-08
  • 打赏
  • 举报
回复
用2个不一样步长的指针,一个每次跑一步,一个每次跑2步,如果跑2步的能追上跑一步的
那就说明有环存在

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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