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