1 class Solution { 2 public: 3 4 ListNode* EntryNodeOfLoop(ListNode* pHead) 5 { 6 ListNode *res=NULL; 7 if(pHead==NULL) 8 return res; 9 ListNode *p1=pHead,*p2=pHead; 10 while(true) 11 { 12 p1=p1->next; 13 if(p2->next) 14 p2=p2->next->next; 15 else return res; 16 if(p1==p2) 17 { 18 res=p1; 19 break; 20 } 21 } 22 int len=1; 23 while(p1->next!=p2) 24 { 25 p1=p1->next; 26 len++; 27 } 28 res=pHead; 29 while(len--) 30 { 31 res=res->next; 32 } 33 p2=pHead; 34 while(res!=p2) 35 { 36 res=res->next; 37 p2=p2->next; 38 } 39 return res; 40 } 41 };