首先,我們應該考慮清楚單鏈表相交的情況。單鏈表有些特殊。兩個單鏈表相交一定只會有一種情況,這是我們必須知道的。這種情況就是下圖。
這就是單鏈表的特殊點了。那看著這個圖我們應該就很清楚這個題目的做法了。我們首先算出兩個鍊錶的長度。然後我們讓長鍊錶首先遍歷這個差值。接下來短鍊表和長鍊錶一起遍歷。直到兩個鍊錶的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...