/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { ListNode*p=head; ListNode*q=head; if(p==NULL) { return 0; } while(p && q) { if(p->next && p->next->next) { p=p->next->next; } else { return 0; } if(q->next) { q=q->next; } else { return 0; } if(p==q) { return 1; } } return 0; } };