您的位置:首页 > 其它

怎么判断链表中是否有环?

2011-10-21 14:02 204 查看
详细分析请参考:/article/9951642.html

本文转自: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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: