求兩單鏈表交點

2021-07-28 14:38:20 字數 382 閱讀 7476

題目:已知兩單鏈表有交點,給出兩單鏈表的頭指標,求交點位置。

思路①:自交點至公共尾部的結點都是相同的,則分別遍歷兩個鍊錶,並將每個結點的指標分別儲存在兩個陣列中,然後從兩陣列尾部開始比較,到兩指標值開始不同時,前一位置即使指向交點的指標。

思路②:分別遍歷兩鍊錶,得到各自的長度l1、l2,然後長的減短的得l;再從頭結點開始,長鍊表的頭指標先向前走l步,然後兩指標同步單步往前走,指向相同結點時即是交點。此方法不需額外的儲存空間。

思路③:先遍歷乙個單鏈表到尾部,然後將尾部的空指標指向另乙個單鏈表的頭部,轉化為求帶環單鏈表的連線點的問題。解決方法參考:

求單鏈表交點

今天面試時,面試官問了這樣乙個問題 兩個單鏈表相交,怎麼求交點。所謂相交,就是兩個節點的next指標相同。例如,對於上圖的兩個單鏈表,遍歷上面的單鏈表得到列表 a,b,c,d,e,f,g 遍歷下面的單鏈表得到列表 h,i,e,f,g。因為單鏈表相交之後就匯合了,匯合之後的節點就是一樣的,而匯合之前的...

求兩個單鏈表的交點(可能帶環)

先簡單分析 兩個單鏈表相交分如圖幾種情況 實現如下 判斷鍊錶是否帶環,若帶環求入口點 pnode iscirclelist pnode phead pnode pfast phead next next pnode pslow phead next while pfast pslow null pf...

如何獲取兩個單鏈表交點

之前的一篇部落格 如何判斷兩條單鏈表是否有交點 只說了如何判斷是否有交點,但並沒有提及如何得到交點。設定陣列分別儲存兩條鍊錶所有節點的位址,然後一 一比較?可行是可行,不過空間時間複雜度太高,不建議使用。那有沒有更高效的方法呢?方法1從相交鍊錶的特點來切入分析,看看下面這張圖。一般來說,相交鍊錶會自...