题目描述:
解题思路:通过快慢指针定义两个指针,一个指针的速度是另一个指针的2倍,如果有环,则他们俩肯定会相遇,如果没环,则指针肯定会走到NULL
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode *head) {
if(head==NULL)
{
return false;
}
if(head->next==NULL)
{
return false;
}
struct ListNode* p=head;
struct ListNode* q=head;
while(q!=NULL&&q->next!=NULL)
{
p=p->next;
q=q->next->next;
if(p==q)
{
break;
}
}
if(q==NULL||q->next==NULL)
{
return false;
}
else
{
return true;
}
}