/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { ListNode *m=f(pHead),*k=pHead; if(m!=NULL) { while(m!=k) { k=k->next; m=m->next; } return m; } return NULL; } ListNode *f(ListNode *head) { ListNode *k=head,*m=head; if(head!=NULL) { while(k!=NULL&&k->next!=NULL) { k=k->next->next; m=m->next; if(k==m) { return m; } } } return NULL; } };