將兩個有序順序表合併為乙個新的有序順序表,並由函式返回合併後的順序表。
非常經典的題目,哪怕死記硬背也應該記下來
按照順序不斷將兩個順序表表頭較小的那個存入新錶中,操作結束後,看哪個表還有剩餘,將剩下的部分加到新錶後面。
線性表採用動態分配空間的方法,最大容量為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 遍歷結束,如果哪個鍊錶沒遍歷完,將剩下的幾點串在新鍊錶的後面,即當...