合併兩個有序的單鏈表

2021-09-30 13:41:48 字數 596 閱讀 5304

鍊錶1和鍊錶2是兩個遞增排序的單鏈表,合併這兩個鍊錶得到公升序的鍊錶如上圖。

鍊錶1的頭結點的值小於鍊錶2的頭結點的值,所以鍊錶1的頭結點是合併後鍊錶的頭結點。(如圖)在剩餘的鍊錶中,鍊錶2的頭結點的值小於鍊錶1的頭結點的值,因此鍊錶2的頭結點是剩餘結點的頭結點,把這個結點和之前合併好的鍊錶的尾節點鏈結起來。(如圖)遞迴可以得到合併後的新鍊錶。

#include

using namespace std;

typedef struct listnode

}node;

node *mergelist(node *head1,node *head2)

else

if (head2 ==

null)

node *mergelisthead =

null;

if (head1->_data < head2->_data)

else

return mergelisthead;

}

合併兩個有序單鏈表

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...

合併兩個有序單鏈表

思路 第一種 遞迴法 這個方法不好想,遞過去的時候做的事情是找到新的單鏈表的下乙個節點,歸的時候做的是告訴每個節點的next是什麼繫結關係,帶入資料就能知道怎麼回事 public listnode merge listnode a,listnode b if b null listnode newh...

合併兩個有序單鏈表

題目 給定兩個有序單鏈表的頭節點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...