struct ListNode *detectCycle(struct ListNode *head) {
struct ListNode *h1=head,*h2=head;
do{
if(h2!=NULL)
h2=h2->next;
else
return NULL;
if(h2!=NULL)
h2=h2->next;
else
return NULL;
h1=h1->next;
}while(h1!=h2);
h2=head;
while(h2!=h1){
h1=h1->next;
h2=h2->next;
}
return h1;
}