合併多個單有序鍊錶(假設都是遞增的)

2021-09-26 04:07:56 字數 494 閱讀 8994

大體思路:使用遞迴

步驟:判斷l1,l2是否為空

建立乙個頭指標

判斷當前l1,l2指向的節點值的大小.根據結果,讓頭指標指向小節點,並讓這個節點往下走一步,作為遞迴函式呼叫的引數放入,返回的就是新的兩個值的比較結果,則新的比較結果放入頭結點的下乙個節點.

返回頭結點

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode* mergetwolists(struct listnode* l1, struct listnode* l2)

if(l2 == null)

//3.根據計算判斷結果及將指標後移

if(l1->val <= l2->val)

else

//4.返回頭結點

return head;

}

有序鍊錶合併

歸併排序 la lb是兩個帶頭結點的有序鍊錶,歸併兩個鍊錶得到新的有序表lc。設立指標pa,pb,pc,其中pa和pb分別指向la,lb中當前待比較的結點,pc指向lc表中當前最後乙個結點。將pa,pb結點中值較小的乙個鏈結到pc之後。typedef struct node node,plink 銷...

合併兩遞增鍊錶

一 迴圈實現 include using namespace std struct listnode class solution if phead2 null 判斷合併煉表頭節點是從哪個節點開始 if phead1 val phead2 val else listnode prehead null...

鍊錶 合併有序鍊錶

題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...