若没有则返回NULL
LNode* FindLoopStart(Linklist L)
{
LNode *fast=L,*slow=L;//设置快慢两个指针
while(slow!=NULL&&fast->next!=NULL)
{
slow=slow->next;
fast=fast->next->next;
if(slow==fast)//相遇证明有环
break;
}
if(slow==NULL||fast->next==NULL)//没有环
return NULL;
LNode *p=L,*q=slow;//分别指向开始点和相遇点
while(q!=p)
{
q=q->next;
p=p->next;
}
return q;
}
头结点到环的入口的距离等于n倍的环长减去入口点到相遇点的距离,故p和q同步移动的相遇点就是环的入口点