實現2個有序鍊錶的合併

2021-10-04 19:28:40 字數 1244 閱讀 3477

原題:

本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。

函式介面定義:

list merge

( list l1, list l2 )

;

其中list結構定義如下:

typedef

struct node *ptrtonode;

struct node

;typedef ptrtonode list;

/* 定義單鏈表型別 */

l1和l2是給定的帶頭結點的單鏈表,其結點儲存的資料是遞增有序的;函式merge要將l1和l2合併為乙個非遞減的整數序列。應直接使用原序列中的結點,返回歸併後的帶頭結點的煉表頭指標。

裁判測試程式樣例:

#include

#include

typedef

int elementtype;

typedef

struct node *ptrtonode;

struct node

;typedef ptrtonode list;

list read()

;/* 細節在此不表 */

void

print

( list l )

;/* 細節在此不表;空煉表將輸出null */

list merge

( list l1, list l2 )

;int

main()

/* 你的**將被嵌在這裡 */

輸入樣例:

313

5524

6810

輸出樣例:

123

4568

10null

null

題解思路:

list merge

( list l1, list l2 )

else

} p->next=h1?h1:h2;

//while迴圈結束意味著l1,l2其中乙個表的所有結點已經存入表x,運用三元運算子判斷h1是否指向null,從而將剩餘的結點連入到表x

l1->next=

null

; l2->next=

null

;return x;

}

合併2個有序鍊錶

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4思路1 public class mergetwolists public static listnode mergetwolists listn...

合併K個有序鍊錶

public class 023 mergeklists 堆中結點類 author luzhen work pc private static class node implements comparable override public int compareto node o 將k個有序鍊錶歸...

合併k個有序鍊錶

這是leetcode上面的一道程式設計題,題目如下 合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 利用遞迴分治的思想將k個有序鍊錶的合併問題,分解成多個合併兩個有序鍊錶的問題。比如示例中我們將三...