详细分析请参考:http://blog.csdn.net/avajworm/article/details/6146116
本文转自:http://topic.csdn.net/t/20051126/20/4420360.html
具体思路是定义两个指针,一快一慢,如果链表中存在环的话,慢的指针一定能够追上快得指针
bool CircleInList(Link* pHead)
{
if(pHead == NULL || pHead-> next == NULL)//无节点或只有一个节点并且无自环
{
return (false);
}
if(pHead-> next == pHead)//自环
{
return (true);
}
Link *pTemp1 = pHead;//step 1
Link *pTemp = pHead-> next;//step 2
while(pTemp != pTemp1 && pTemp != NULL && pTemp-> next != NULL)
{
pTemp1 = pTemp1-> next;
pTemp = pTemp-> next-> next;
}
if(pTemp == pTemp1)
{
return (true);
}
return (false);
}