/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* EntryNodeOfLoop(ListNode* pHead) { //快慢指针 //判断有环无环 ListNode* slow = pHead; for(int i = 0;i < 10000;i++) { if(slow == nullptr) return nullptr;slow = slow->next; } slow = pHead->next; ListNode* quick = pHead->next->next; while(slow != quick) //有环就会相遇 { slow = slow->next; quick = quick->next->next; } quick = pHead; while(quick != slow) { quick = quick->next; slow = slow->next; } return slow; } };