如果兩個鍊錶相交於某一節點,那麼在這個相交節點之後的所有節點都是兩個鍊錶所共有的。也就是說,如果兩個鍊錶相交,那麼最後乙個節點肯定是共有的。先遍歷第乙個鍊錶,記住最後乙個節點,然後遍歷第二個鍊錶,到最後乙個節點時和第乙個鍊錶的最後乙個節點做比較,如果相同,則相交,否則不相交。時間複雜度為o( len1 + len2),因為只需要乙個額外指標儲存最後乙個節點位址,空間複雜度為o(1)
// 判斷鍊錶中是否有環
bool i***itloop(linklist *head)
{ linklist *pslow = head;
linklist *pfast = head;
while(pfast != null && pfast->next != null)
{ pslow = pslow->next; // 每次前進一步
pfast = pfast->next->next; // 每次前進二步
if(pslow == pfast) // 兩個指標相遇,說明存在環
return
true;
return
false; // 沒有環
經典面試題 鍊錶的相交與環問題
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!1 給出兩個單向鍊錶的頭指標phead1和phead2,判斷這兩個鍊錶是否相交。假設兩個鍊錶均不帶環。示意圖如下 如果兩個鍊錶相交於某一節點,那麼在這個相交節點之後的所有節點都是兩個鍊錶所共有的。也就是說,如果兩個鍊錶相交,那麼最後乙個節點肯定是共...
經典面試題 鍊錶的相交與環問題
出處 1.給出兩個單向鍊錶的頭指phead1和phead2,判斷這兩個鍊錶是否相交。假設兩個鍊錶均不帶環。示意圖如下 如果兩個鍊錶相交於某一節點,那麼在這個節點之後的所有節點都是兩個鍊錶所共有的。那麼也就是說,如果兩個鍊錶相交,那麼最後乙個節點肯定是共有的。先遍歷第乙個鍊錶,記住最後乙個節點,然後遍...
單鏈表相交與環問題
程式設計之美 裡面有一篇是講如何判斷兩鍊錶是否相交,讀後覺得原文太過囉嗦。於是,筆者總結了一下,此類問題可以擴充套件為兩大類,分別是 1 單鏈表與環問題 2 單鏈表相交與環問題 本文 給定兩單鏈表a b,只給出兩頭指標。請問 1 如何判斷兩單鏈表 無環 是否相交?有兩種可取的辦法 1 人為構環,將鍊...