剑指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;
        
    }
};

猜你喜欢

转载自blog.csdn.net/ox0080/article/details/84137903