使用两个指针来遍历单向链表,第一个指针P1,每次走一步。第二个指针P2每次走两步;当P2指针追上P1的时候就说明链表中有环路了。
int testLinkRing(Link *head)
{
Link *t1=head;
Link *t2=head;
while(t1->next&&t2->next)
{
t1=t1->next;
if(t2->next->next==NULL)
return 0;//无环
if(t1==t2)
return 1;//有环
}
}