求兩個單鏈表的第乙個公共節點

2021-10-03 10:28:39 字數 724 閱讀 1442

求兩個單鏈表的第乙個公共節點。

分析:兩個鍊錶的第乙個公共節點之後的部分相同(完全重合)

1.當兩個單鏈表a、b長度相等時,對兩個單鏈表同時進行遍歷,若節點不相等,則指標分別指向下乙個節點;當a鍊錶的指標等於b鍊錶的指標時,該節點即為第乙個公共節點。

2.當兩個單鏈表a、b長度不相等時,假設b為兩個鍊錶中較長的乙個,其長度為m,a鍊錶的長度為n,則m>n;則b鍊錶的前m-n個節點的不可能存在公共節點,對其前m-n個節點進行遍歷,使其後半部分的長度和a鍊錶的長度想的,其長度為n,此時兩個鍊錶長度相等,採用步驟1中的思路進行同時遍歷。

時間複雜度為o(m+n),即為o(m);

**如下:

struct listnode};

class

solution

return n;

}//求第乙個公共節點

listnode*

firstcommonnode

(listnode* heada,listnode* headb)

//將b前blength-alength個節點空轉

for(

int i=

0;i!=blength-alength;i++

)//兩個個指標同時遍歷

while

(heada)

return

null

;}

兩個單鏈表的第乙個公共節點

題目 求兩個單鏈表的第乙個公共子節點。思路 我們可以先遍歷兩個單鏈表得到長度,然後求得兩個鍊錶長度的差值,然後讓長的那個鍊錶先走到差值長度位置,然後兩個鍊錶再同時遍歷,直到找到第乙個公共節點。struct listnode int getlistlength listnode head return...

兩個單鏈表的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 由於單鏈表中節點只能有乙個next指標,所以兩個單鏈表相交,只能是y型的形狀,兩者的尾部重疊,第乙個重疊的節點就是我們要找的第乙個公共節點。假設鍊錶1的長度為a c,鍊錶2...

兩個單鏈表第乙個公共結點

基本概念 兩個鍊錶是單鏈表,如果兩個鍊錶有公共節點,那麼這兩個鍊錶從某一節點開始,它們都指向同乙個節點,之後它們所有的節點都是重合的,不可能再出現分叉。所以拓撲形狀看起來是y型。演算法思想 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾個節點。在第二次遍歷的時候,...