题目:如果一个链表循环,返回第一个进入循环的点,否则返回NULL。
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
if(head==NULL || head->next==NULL)
return NULL;
ListNode* pslow = head;
ListNode* pfast = head;
while(pfast!=NULL)
{
if(pfast != NULL)
pfast = pfast->next;
if(pfast != NULL)
pfast = pfast->next;
if(pfast==NULL)
break;
pslow = pslow->next;
if(pfast != NULL && pslow == pfast){
pslow = head;
while(pslow != pfast){
pslow = pslow->next;
pfast = pfast->next;
}
return pslow;
}
}
return NULL;
}
};