尋找兩個相交的單鏈表的第乙個節點

2021-07-29 11:48:59 字數 1102 閱讀 8141

首先,我們應該考慮清楚單鏈表相交的情況。單鏈表有些特殊。兩個單鏈表相交一定只會有一種情況,這是我們必須知道的。這種情況就是下圖。

這就是單鏈表的特殊點了。那看著這個圖我們應該就很清楚這個題目的做法了。我們首先算出兩個鍊錶的長度。然後我們讓長鍊錶首先遍歷這個差值。接下來短鍊表和長鍊錶一起遍歷。直到兩個鍊錶的next是相同的時候,那麼這個next就是鍊錶的交點了。

package test20170324;

/** * created by 58 on 2017/3/24.

* author yun zhi fei

*/public class intersectionpointoflist

public node calcintersectionpoint(node first, node second)

node result = null;

int length1 = 0;

int length2 = 0;

while (first != null)

while (second != null)

boolean firstmorelong = length1 > length2;

int sub = 0;

if (firstmorelong)

} else

}second = secondcopy;

first = firstcopy;

while (first != null && second != null) else

}return result;

}}class node

public void setvalue(int value)

public node getnext()

public int getvalue()

public node setnext(node next)

@override

public string tostring()

}

兩個單鏈表的相交問題,第乙個公共結點

關於這個問題,有三種思路。第一種是最普通的思路,使用2層迴圈,第一層迴圈遍歷鍊錶a,在每次遍歷到乙個結點時,第二層迴圈遍歷鍊錶b看看有沒有一樣的結點,這個思路比較容易想,但是這個的思路的時間複雜度比較高,如果兩個鍊錶乙個長度m,乙個長度為n,時間複雜度就是o mn 第二種思路需要用到棧,還需要用到單...

兩個單鏈表相交,找出第乙個交點

給兩個單鏈表,如何判斷兩個單鏈表是否相交?若相交,則找出第乙個相交的節點 解這道題之前,我們需要首先明確乙個概念 如果兩個單鏈表有共同的節點,那麼從第乙個共同節點開始,後面的節點都會重疊,直到鍊錶結束 因為兩個鍊錶中有乙個共同節點,則這個節點裡的指標域指向的下乙個節點位址一樣,所以下乙個節點也會相交...

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

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