1. 程式人生 > >劍指offer____連結串列中環的入口節點

劍指offer____連結串列中環的入口節點

給一個連結串列,若其中包含環,請找出該連結串列的環的入口結點,否則,輸出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;
        
    }
};