面试题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 };

 

posted @ 2016-04-10 19:05  早杰  阅读(199)  评论(0编辑  收藏  举报