struct ListNode* EntryNodeOfLoop(struct ListNode* pHead ) 
{
     if (pHead == NULL)
        return NULL;
     struct ListNode* fast = pHead;
     struct ListNode* slow = pHead;
     while(fast != NULL && fast->next != NULL)
     {
         slow = slow->next;
         fast = fast->next->next;
         if(slow == fast)     
             break;
     }
    if(fast == NULL || fast->next == NULL)
        return NULL;
    fast = pHead;
    while(fast != slow)
    {
        fast = fast->next;
        slow = slow->next;
    }
    return fast;
}