使用快慢指针法
慢指针设置为头节点
快指针设置为头节点+1;
如果快慢指针相等则,证明存在环形链表
注意判断条件,快指针和快指针的下一个指针不能为空指针,空指针不能进行操作,但非空指针的下一个可以是空指针。
class Solution {
public:
bool hasCycle(ListNode *head) {
//使用快慢指针,当快慢指针相等的时候,证明有环
if(head==nullptr || head->next==nullptr) return false;
ListNode *fast=head->next;
ListNode *slow=head;
while(slow != fast)
{
if(fast==nullptr || fast->next== nullptr) return false;
fast=fast->next->next;
slow=slow->next;
}
return true;
}
};