之前曾有问过链是否有环,一直也没写过,今天进行一下总结:
一种写法,快慢指针方式,因为快指针比慢指针跳转的快
所以如果快指针为NULL了,那么就不是环;如果快指针不断运行早晚都会和慢指针重合的
/*
*@author: 赵秋然
*@date:2021年1月10日
*@description:判断链是否有环
*@param head:链表头结点
*@return: 正确:1, 失败: 0
*/
bool listHuan(ListNode *head)
{
if (head == NULL || head->next == NULL)
{
return false;
}
ListNode *cur = head, * fcur = head->next;
while (cur != fcur)
{
if (fcur == NULL || fcur->next == NULL)
{
return false;
}
cur = cur->next;
fcur = fcur->next->next;
}
return true;
}