此题目是编程之美3.11扩展问题:简单并带有错误的环形单链表检测代码
看了相关资料后解题思路记录如下:
p1=p2=head;
while(p2!=NULL && p2->next!=NULL)
{
p1=p1->next;
p2=p2->next->next;
if(p1==p2)
break;
}
if(p2==NULL || p2->next==NULL)
{
cout<<"无环"<<endl;
return ;
}
else ///说明跳出while循环的原因是p1=p2,则说明存在环
{
cout<<"有环"<<endl;
p2=head;
while(p1!=p2)
{
p2=p2->next;
p1=p1->next;
}
return p1;
}