程式設計之美 鍊錶有環,如何判斷相交

2021-07-13 14:03:13 字數 686 閱讀 6783

如果兩個鍊錶無換,判斷是否相交很簡單,判斷兩個環的最後乙個節點指標是否相等即可。

題目描述:上面的問題都是針對鍊錶無環的,那麼如果現在,鍊錶是有環的呢?上面的方法還同樣有效麼?

分析:如果有環且兩個鍊錶相交,則兩個鍊錶都有共同乙個環,即環上的任意乙個節點都存在於兩個鍊錶上。因此,就可以判斷一煉表上倆指標相遇的那個節點,在不在另一條鍊錶上。

無環鏈表和有環鏈表是不可能相交的;

兩個有環鏈表若相交,其「整個環上」的所有node一定都重合;

有環鏈表的相交,情況只有2種:相交於」環上」或相交於」不是環的部分」,即下圖所示;

//判斷單鏈表是否存在環,引數circlenode是環內節點,後面的題目會用到

bool hascircle(node *head,node *&circlenode)

}return false;

}

//判斷兩個帶環鍊錶是否相交

bool isintersectwithloop(node *h1,node *h2)

return false;

}

參考:

程式設計之美 判斷兩鍊錶是否相交

程式設計之美 裡面有一篇是講如何判斷兩鍊錶是否相交,讀後覺得原文太過囉嗦。於是,筆者總結了一下,此類問題可以擴充套件為兩大類,分別是 1 單鏈表與環問題 2 單鏈表相交與環問題 本文 給定兩單鏈表a b,只給出兩頭指標。請問 1 如何判斷兩單鏈表 無環 是否相交?有兩種可取的辦法 1 人為構環,將鍊...

程式設計之美 判斷兩鍊錶是否相交

程式設計之美 裡面有一篇是講如何判斷兩鍊錶是否相交,讀後覺得原文太過囉嗦。於是,筆者總結了一下,此類問題可以擴充套件為兩大類,分別是 1 單鏈表與環問題 鍊錶與環問題 2 單鏈表相交與環問題 本文 給定兩單鏈表a b,只給出兩頭指標。請問 1 如何判斷兩單鏈表 無環 是否相交?有兩種可取的辦法 1 ...

程式設計之美 鍊錶是否相交

個人認為,演算法永遠是王道。此處將擷取程式設計之美這本書上經典的演算法題,以饗各位。同時,除了旁徵博引之外,也會加入我個人的思考。所寫之處,望不吝賜教。july 2010年10月。1.程式設計判斷倆個鍊錶是否相交 給出倆個單向鍊錶的頭指標,比如h1,h2,判斷這倆個鍊錶是否相交。為了簡化問題,我們假...