```
class Solution {
public:
bool hasCycle(ListNode *head) {
ListNode *n,*h;
if(head==NULL)
return false;
if(head->next==NULL)
return false;
if(head->next==head)
return true;
h=head;
n=head->next;
while(n->next!=NULL)
{
if(n->next==n)
{
return true;
break;
}
if(n->next==head)
{
return true;
break;
}
else
{
head=head->next;
if(head==n)
{
n=n->next;
head=h;
}
}
}
return false;
}
};
```