链表环
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190628094158265.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW9ob3V0YW8=,size_16,color_FFFFFF,t_70)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
//对于这种题目,一般都是双指针的操作
ListNode* slow=head;
ListNode* fast=head;
ListNode* jiaodian=NULL;
while(fast&&fast->next)
{
fast=fast->next->next;
slow=slow->next;
if(fast==slow)
{
jiaodian=fast;
break;
}
}
ListNode* congxi=head;
if(jiaodian)
{
while(1)
{
//如果第一个就重叠了的话,这里先判断一下是否是head节点相遇的
if(congxi==jiaodian)
return congxi;
congxi=congxi->next;
jiaodian=jiaodian->next;
}
}
else
return NULL;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190628094257791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW9ob3V0YW8=,size_16,color_FFFFFF,t_70)