思想:(1)快慢指针,先让快指针追上慢指针
(2)令快指针指向表头,慢指针的指向不变,两个指针同时开始走
(3)两个指针相遇时,所指节点即为环的入口
Node
*FindEntry(
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
;
}
}
fast = *
pplist
;
while
(fast != slow)
{
fast = fast->next;
slow = slow->next;
}
return
fast;
}