將兩個有序順序表合併為乙個新的有序順序表

2021-09-24 20:18:21 字數 1174 閱讀 2886

將兩個有序順序表合併為乙個新的有序順序表,並由函式返回合併後的順序表。

非常經典的題目,哪怕死記硬背也應該記下來

按照順序不斷將兩個順序表表頭較小的那個存入新錶中,操作結束後,看哪個表還有剩餘,將剩下的部分加到新錶後面。

線性表採用動態分配空間的方法,最大容量為maxsize。

bool merge

(seqlist a

, seqlist b

, seqlist &c)

while

(i <

a.length)

c.data[k++]=

a.data[i++];

while

(j <

b.length)

c.data[k++]=

b.data[j++];

c.length = k;

return

true

;}

//函式功能:

//將兩個有序順序表合併為乙個新的有序順序表,並由函式返回結果

#include

using namespace std;

#define initsize 50

typedef int elemtype;

typedef structseqlist;

void

initlist

(seqlist &l)

l.length =0;

l.maxsize = initsize;

}bool merge

(seqlist a

, seqlist b

, seqlist &c)

while

(i <

a.length)

c.data[k++]=

a.data[i++];

while

(j <

b.length)

c.data[k++]=

b.data[j++];

c.length = k;

return

true;}

void

printlist

(seqlist l

)void

main()

將兩個遞增的有序鍊錶合併為乙個遞增的有序鍊錶

將兩個遞增的有序鍊錶合併為乙個遞增的有序鍊錶。要求結果鍊錶仍使用原來兩個鍊錶的儲存空間,不另外占用其它的儲存空間。表中不允許有重複的資料。void mergelist linklist la,linklist lb,linklist lc 取較小者la中的元素,將pa鏈結在pc的後面,pa指標後移 ...

兩個有序鍊錶合併為有序

include 兩個有序遞增的單鏈表 有頭結點 合併為新單鏈表。include 用尾插法表示這兩個鍊錶較好,因為這樣建立鍊錶是有序的,遞增的。如果用頭插法,for迴圈改為for i n i 0,i 使其新建的鍊錶遞增 typedef struct lnode lnode lnode creat ln...

單鏈表 兩個有序鍊錶合併為乙個有序

1 new乙個新的鍊錶,定義結點用來遍歷兩個待排序的鍊錶 2 兩個待排序的鍊錶,哪個頭結點小,哪個作為新鍊錶的頭結點 3 對兩個鍊錶的結點進行比較,讓新鍊錶的next指向較小的結點,更新新鍊錶的尾巴,繼續比較直至某個鍊錶遍歷結束。4 遍歷結束,如果哪個鍊錶沒遍歷完,將剩下的幾點串在新鍊錶的後面,即當...