合併兩個有序的單鏈表

2021-07-09 03:12:07 字數 597 閱讀 3346

public node merge(node head1 , node head2)

node head = head1.value < head2.value ? head1 : head2 ; //確定合併的頭結點

node cur1 = head == head1 ? head1 : head2 ; //cur1引用的是合併頭結點所在的鍊錶

node cur2 = head == head1 ? head2 : head1 ; //cur2引用,另乙個鍊錶的結點

node pre = null ; // pre 指向合併鍊錶進行中的尾部,即最新加入的結點,上次比較時值較小的結點

node next = null ;

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

} //如果cur1空,則直接將cur2鍊錶加入到pre後面,如果cur2空,則不需要調整

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

return head ;

}class node

}

合併兩個有序單鏈表

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