合併兩個有序單鏈表

2021-10-19 06:58:08 字數 736 閱讀 4315

題目:給定兩個有序單鏈表的頭節點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+n), 空間複雜度o(1)的解

public

static node mergelist

(node head1, node head2)

node head = head1.value < head2.value? head1 : head2;

node cur1 = head == head1? head1 : head2;

node cur2 = head == head1? head2 : head1;

//用於連線較小的節點

node pre = null;

//用於儲存cur2後面的鍊錶

node next = null;

while

(cur1 != null && cur2 != null)

else

} pre.next = cur1 == null? cur2 : cur1;

return head;

}

合併兩個有序單鏈表

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

合併兩個有序的單鏈表

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