c語言合并兩個有序鏈表 鏈表的方式怎么實現(xiàn)2個鏈表相加?
鏈表的方式怎么實現(xiàn)2個鏈表相加?如果頭節(jié)點不同的話,這一定是個單鏈表,單鏈表有同一個交點,則后面都會相交,也就是說這是個Y字型的鏈表。 小數(shù)據(jù),可以用哈希,比較好寫。 但有更好的方法:先各自走
鏈表的方式怎么實現(xiàn)2個鏈表相加?
如果頭節(jié)點不同的話,這一定是個單鏈表,單鏈表有同一個交點,則后面都會相交,也就是說這是個Y字型的鏈表。 小數(shù)據(jù),可以用哈希,比較好寫。 但有更好的方法:先各自走一遍,記住長度,然后假設(shè)長的那個鏈表長度為X,另一個為Y,讓長的那個往前走X-Y個長度,然后兩個鏈表各自用一個指針同時往前走,當(dāng)遇到相同的節(jié)點時找到答案。 時間:O(n),空間O(1)
有關(guān)c語言兩個順序鏈表的合并?
two point + 鏈表尾插法。定義兩個指針p1.p2分別指向兩個鏈表L1和L2的開始結(jié)點。然后外層一個while(p1&&p2),兩兩比較指針指向結(jié)點的值,值小的結(jié)點就尾插進(jìn)新的鏈表L3,并且值小的指針后移,大的指針不動。如果是兩個指針指向相等大小結(jié)點,就把指針都往后移。外層while循環(huán)結(jié)束,L3就是得到的非遞增鏈表。