題目要求:合并兩個(gè)單向已排序的鏈表l1和l2,返回新的鏈表。
思路:該問(wèn)題跟合并兩個(gè)已排序的數(shù)組很像,合并兩個(gè)已排序的數(shù)組是使用三個(gè)指針,從尾向頭掃描,不斷加入到數(shù)組中。而單向鏈表不能從尾往頭加,這時(shí)候考慮也用兩個(gè)“指針”從頭往尾掃,加入到第三個(gè)新的鏈表中。
起始狀態(tài):比較l1的頭結(jié)點(diǎn)和l2的頭結(jié)點(diǎn)的大小,讓較小的(假如為l1)作為新的鏈表的頭節(jié)點(diǎn),然后再遞歸地比較l1.next和l2的“頭節(jié)點(diǎn)”(l1.next可以看做一個(gè)新的鏈表,它去除了剛剛加入新鏈表的數(shù))直到兩個(gè)鏈表中有一個(gè)為空鏈表為止。
還需要考慮特殊情況,當(dāng)l1為空或者l2為空時(shí),剩下的另一個(gè)鏈表的數(shù)據(jù)可以直接追加到新鏈表中,不需要再比較。
最終返回新鏈表的頭節(jié)點(diǎn)即可。
代碼如下。

