連結串列面試題(十)---求帶環單連結串列的環的長度

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;

二、函式實現

用cur記錄相遇結點的下一個位置,計數器num初始化為1;然後cur每次走一步,計數器加1,等到cur走到相遇點;num就統計出來環內結點的個數;

//10.求環的長度
int GetCycleLength(PListNode Node)//Node為環內一點(即就是快慢指標相遇點)
{
    PListNode meet=Node->next;
    int num=1;
    while (meet!=Node)
    {
        num++;
        meet=meet->next;
    }
    return num;
}

相關文章