class Solution {

public:

```
ListNode *detectCycle(ListNode *head) {
ListNode *p=head,*q=head;
bool pk=false;
while(p!=NULL)
{
p=p->next;
if(p==q)
{
pk=true;
break;
}
if(p==NULL)
break;
p=p->next;
if(p==q)
{
pk=true;
break;
}
q=q->next;
}
if(pk)
{
q=head;
while(p!=q)
{
p=p->next;
q=q->next;
}
return q;
}
return NULL;
}
```

};