链表是否有环
作者:互联网
class Solution {
public:
bool hasCycle(ListNode *head) {
// 首先判断链表是否为空
if(head == NULL) return false;
// 定义快慢指针
ListNode *slow = head;
// 其实快指针也可以和慢指针同起点,只要快指针跑得比满指针快就行
ListNode *fast = head->next;
while(1)
{
if(fast != slow && fast !=NULL && fast->next !=NULL ) // 如果快指针还没有跑完,并且还没有遇到交点,就继续跑
{
slow=slow->next ;
fast=fast->next->next;
}
else break;
}
// 跳出循环的条件可能是链表跑完了还没有环,还有可能是有环
if (fast == slow) // 如果有环,就返回true
return true;
// 没有环就返回false
return false;
}
};
标签:head,slow,是否,fast,next,链表,有环,指针 来源: https://blog.csdn.net/qq_43403759/article/details/120601024