160 相交鍊錶(雙指標法)

2021-10-10 13:51:17 字數 581 閱讀 7813

解題思路

1.雙指標法:讓指標1遍歷完鍊錶1後指向鍊錶2的第乙個節點,指標2遍歷完鍊錶2後指向鍊錶1的第乙個節點。這樣指標1遍歷完鍊錶2後,和指標2遍歷完鍊錶1後走過的總距離就是一樣的,因此當兩個指標都進入第二個鍊錶後就可以保證它們離表尾的距離相同,就可以輕鬆判斷是否相交了。

2.鍊錶的最後乙個節點的next域通常是指向null的,指標在操作鍊錶的時候也可以指向這個null(即指向最後乙個節點還能->next),所以通常把這個null也理解為鍊錶的乙個節點來操作。比如在這裡指標是指向null後再指向第二個表的第乙個節點,如果不這樣不相交的情況下就無法跳出迴圈。而且把這個null視為節點對於空鍊錶情況也有利!!!

題目

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode *

getintersectionnode

(struct listnode *heada,

struct listnode *headb)

return q;

}

160 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node with valu...

160 相交鍊錶

題目描述 題目問題和難點 1.是找相交的那個節點,而不是值相等的節點。示例中1的值相同但不是相交的節點 2.此題目不考慮有環的鍊錶所以思路很簡單。public static listnode getintersectionnode listnode heada,listnode headb 1.獲取...

160相交鍊錶

題目描述 編寫乙個程式,找到兩個單鏈表相交的起始節點。沒有就返回null。注意 題解思路 從a鍊錶第乙個元素開始,去遍歷b鍊錶,找到乙個相同元素後,同步遍歷a和b鍊錶,所有元素相同,即兩個鍊錶為相交鍊錶,並返回同步遍歷的起始節點。struct listnode getintersectionnode...