有序表的合併 煉表表實現

2021-09-26 08:25:12 字數 1073 閱讀 3558

#include using namespace std;

// 函式結果狀態**

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

#define maxsize 100

// status 是函式的型別 其值是函式結果狀態**

typedef int status;

typedef int elemtype;

typedef struct listnodelistnode, *linklist;

// 單鏈表的初始化

status initlist_l(linklist &l)

// 尾插法:正序輸入n個元素值,建立帶頭結點的單鏈表 演算法複雜度o(n)

void creatlist_r(linklist &l, int n)

}// 遍歷鍊錶

status printlist(linklist l)

cout << endl;

return ok;

}// 有序表合併--用鍊錶實現 時間複雜度o( listlength(la)+listlength(lb) )

void mergelist_l(linklist &la, linklist &lb, linklist &lc) else

}pc->next = pa ? pa : pb; // 插入剩餘段

delete lb;

}// 頭插法測試**

int main()

測試: 

尾插法[3]:1 7 8

尾插法[6]:2 4 6 8 10 11

la: 1 7 8

lb: 2 4 6 8 10 11

有序表合併lc: 1 2 4 6 7 8 8 10 11

感謝青島大學-王卓老師細心的講解~!

有序鍊錶合併

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

實現2個有序鍊錶的合併

原題 本題要求實現乙個函式,將兩個鍊錶表示的遞增整數序列合併為乙個非遞減的整數序列。函式介面定義 list merge list l1,list l2 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode l...

鍊錶 合併有序鍊錶

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