連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點

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;

二、分析
這裡寫圖片描述
三、函式實現
//上圖方法一的實現

//13.求兩個都不帶環的連結串列相交的結點;如果不相交,返回NULL;---O(N²)
PListNode GetCrossNode(PListNode PHead1,PListNode PHead2)
{
    PListNode cur1=PHead1;
    PListNode cur2=PHead2;
    while (cur1)
    {
        while (cur1!=cur2&&cur2)
        {
            cur2=cur2->next;
        }
        if (cur1==cur2)
        {
            return cur2;
        }
        cur1=cur1->next;
        cur2=PHead2;
    }
    return NULL;
}

相關文章