劍指offer____連結串列中環的入口節點
阿新 • • 發佈:2018-11-17
給一個連結串列,若其中包含環,請找出該連結串列的環的入口結點,否則,輸出null。
struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class Solution { public: ListNode* hasCircle(ListNode* phead) { ListNode* slow=phead; ListNode* fast=phead; while(fast!=NULL) { slow=slow->next; fast=fast->next; if(fast==NULL) return NULL; fast=fast->next; if(fast==slow) break; } return slow; } ListNode* EntryNodeOfLoop(ListNode* pHead) { ListNode *p=hasCircle(pHead); if(p==NULL) return NULL; ListNode *ph=pHead; while(p!=ph){ p=p->next; ph=ph->next; } return p; } };