合併兩個有序單鏈表

2021-09-25 23:23:38 字數 644 閱讀 7007

思路:

第一種·:

遞迴法:

這個方法不好想,遞過去的時候做的事情是找到新的單鏈表的下乙個節點,歸的時候做的是告訴每個節點的next是什麼繫結關係,帶入資料就能知道怎麼回事

public listnode merge(listnode a, listnode b) 

if (b == null)

listnode newhead = null;

if (a.val < b.val)

else

return newhead;

}

這裡的newhead就是新的單鏈表的表頭,也充當了乙個指標,在a和b的頭部通過比大小放入newhead並且得到newhead的next

舉了乙個例子:a 1 3 5

b 2 4 6

這兩個鍊錶合併:

可以看出從最後比(null,6)這個時候開始往回回溯,填補的是的是上乙個節點的下乙個是什麼那個空,而上乙個節點返回上上乙個節點就是他自己,每乙個節點返回的都是他自己,作為上乙個節點的下乙個節點(說不清)反正就是圖里畫的那樣,很巧妙,一般只能記住嘍。

合併兩個有序單鏈表

include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...

合併兩個有序單鏈表

題目 給定兩個有序單鏈表的頭節點head1和head2,請合併兩個有序鍊錶,合併後的鍊錶依然有序,並返回合併後的鍊錶的頭節點。例如 0 2 3 7 null 1 3 5 7 9 null 合併後的鍊錶為 0 1 2 3 3 5 7 7 9 null 本題考察鍊錶基本操作 關鍵是能寫出時間複雜度o m...

合併兩個有序的單鏈表

public node merge node head1 node head2 node head head1.value head2.value head1 head2 確定合併的頭結點 node cur1 head head1 head1 head2 cur1引用的是合併頭結點所在的鍊錶 nod...