連結串列面試題(十一)---求帶環單連結串列 環的入口點

gogogo_sky發表於2017-05-17

一、結構體定義

typedef int DataType;

typedef struct ListNode//定義結點
{
    DataType data;
    struct ListNode* next;
}ListNode,*PListNode;

typedef struct  PList//定義一個成員是指向結點的指標的結構體
{
    PListNode PHead;
}PList,*PList;

二、函式實現
思路:
這裡寫圖片描述

得出的結論:

用兩個指標分別從連結串列的頭結點和快慢指標在環內的相遇接單開始走; 那麼這兩個結點首次相遇的結點就是連結串列環的入口結點;

//11.求環的入口點
PListNode GetCycleEntryNode(PListNode PHead,PListNode  meetNode)
{
    PListNode start=PHead;
    PListNode meet=meetNode;
    while (start!=meetNode)
    {
        start=start->next;
        meetNode=meetNode->next;
    }
    return start;
}

相關文章