思想:快慢指针,先让快指针追上慢指针,再快指针不动,慢指针单步走,两个指针再次相遇时,慢指针在第一次相遇后所单步走的步数就为环长
intLengthCycle(Plinklist*pplist)
{
assert(pplist);
Node*fast
= *pplist;
Node*slow
= *pplist;
while(fast&&fast->next)
{
fast = fast->next->next;
slow = slow->next;
if(fast
== slow)
{
break;
}
}
intcount
= 0;
do
{
slow = slow->next;
count++;
}while(fast
!= slow);
returncount;
}