鍊錶的相交與環存在問題

2021-06-10 10:42:47 字數 597 閱讀 7205

如果兩個鍊錶相交於某一節點,那麼在這個相交節點之後的所有節點都是兩個鍊錶所共有的。也就是說,如果兩個鍊錶相交,那麼最後乙個節點肯定是共有的。先遍歷第乙個鍊錶,記住最後乙個節點,然後遍歷第二個鍊錶,到最後乙個節點時和第乙個鍊錶的最後乙個節點做比較,如果相同,則相交,否則不相交。時間複雜度為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 人為構環,將鍊...