面试题56 链表中环的入口结点
题目描述
一个链表中包含环,请找出该链表的环的入口结点。
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 }; 9 */ 10 class Solution { 11 public: 12 ListNode* EntryNodeOfLoop(ListNode* pHead) 13 { 14 if (!pHead || !pHead->next) 15 return NULL; 16 ListNode *p = pHead; 17 ListNode *q = pHead; 18 while(p != NULL && q->next != NULL ){ 19 p = p->next; 20 q = q->next->next; 21 if(p == q){ 22 q = pHead; 23 while(p != q){ 24 p = p->next; 25 q = q->next; 26 } 27 if(p == q) 28 return p; 29 } 30 } 31 return NULL; 32 } 33 };