struct nodelist
{
int idata;
nodelist *next;
}*PLinkList;
//快指针一次增2个单位,慢指针一次增1个单位
bool checkloop(const PLinkList linklist)
{
if(NULL==linklist||NULL==linklist->next)
{
return false;
}
PLinkList lowlinklist=linklist;
PLinkList highlinklist=linklist->next;
if(highList==lowlinklist)
{
return true;//自环
}
while(NULL!=highlinklist&&NULL!=highlinklist->next)
{
lowlinklist=lowlinklist->next;//慢指针
highlinklist=highlinklist->next->next;//快指针
if(highlinklist==lowlinklist)
{
return true;
}
}
return false;
}