3.10
10編寫乙個成員函式,檢查兩個單鏈表的內容是否相同。
首先,兩個單鏈表內容的相同應該是在兩個單鏈表長度一致的情況下進行比較,如果長度不一致也滿足不了,則必不相等。其次,只有當所有的內容一一相等時,兩個單鏈表才相等,則剩餘的所有情況均為不相等。
在這裡插入**片void list_same(list la, list lb)
if (i==n&&pa->info==pb->info)
else
}else
}
注意,上述的while迴圈應當擁有以下功能:1.當對位的資料內容不等時,結束迴圈;2.當已經比較到鍊錶尾部時,結束迴圈。這兩者為或的關係,所以我使用了pa->info == pb->info&&i != n。當這樣做有乙個缺陷,即當比較到
鍊錶尾部時,無論相等,迴圈都已經結束了。所以在後續判斷時還需比較最後的兩個資料內容。
檢查兩個單鏈表是否有交點
思路1 先遍歷第乙個鍊錶到他的尾部,然後將尾部的next指標指向第二個鍊錶 尾部指標的next本來指向的是null 這樣兩個鍊錶就合成了乙個鍊錶,判斷原來的兩個鍊錶是否相交也就轉變成了判斷新的鍊錶是否有環的問題了 即判斷單鏈表是否有環?思路2 如果他們相交的話,那麼他們最後的乙個節點一定是相同的,否...
將兩個單鏈表合併成乙個有序單鏈表
3.10 4.將兩個單鏈表合併成乙個有序單鏈表 由於以前初學c 時所寫的 不堪入目,不符合規範性,完整性和魯棒性,於是今日重寫其核心演算法以警示自己。node merge node p1head,node p2head else return pmergedhead 思路 因為鍊錶可以由結點輕鬆構造...
兩個單鏈表第乙個公共結點
基本概念 兩個鍊錶是單鏈表,如果兩個鍊錶有公共節點,那麼這兩個鍊錶從某一節點開始,它們都指向同乙個節點,之後它們所有的節點都是重合的,不可能再出現分叉。所以拓撲形狀看起來是y型。演算法思想 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾個節點。在第二次遍歷的時候,...