1.判断单链表内是否有环?
- 设置两个指针,一个快指针,一个慢指针,起初都指向头结点
- 让快指针一次走两步,满指针一次走一步,如果链表内有环的话,经过一定次数后,快慢指针会相遇,则证明链表内有环(可参照下图例子)
struct ListNode
{
int val;
ListNode* next;
}
class Solution{
public:
bool hasCycle(ListNode* head){
if(head==NULL)
return NULL;
ListNode* slow=head;
ListNode* fast=head;
while(fast->next!=NULL&&fast->next->next!=NULL)
{
fast=fast->next->next;
slow=slow->next;
if(slow==fast)
{
return true;
break;
}
}
return NULL;
}
};