將兩個順序儲存的有序表A和B合成乙個有序表C的演算法

2021-10-13 21:10:38 字數 539 閱讀 7455

假設a、b和c的型別為下述sqlist型別:

#define maxlen 1000

typedef int elemtype

typedef struct

sqlist;

設a和b的資料元素均為整數且為公升序排列,設a的長度為m,b的長度為n,則合併後c的長度為m+n。合併時進行a、b元素的比較,將較小的鏈入c中,演算法描述如下:

int merge (sqlist *a, sqlist *b, sqlist *c) //將兩個有序表a和b合成乙個有序表c

i=0; j=0; //i和j分別作為掃瞄順序表a和b的指標

k=0; //k指示順序表c中當前位置

while ((i<=m)&&(j<=n))

if((*a).elem[i]<=(*b).elem[j])

else

while(i<=m) //表b已結束,表a沒有結束,鏈入錶a的剩餘部分

while(j<=m) //表a已結束,表b沒有結束,鏈入錶b的剩餘部分

return (1);

}

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

將兩個有序順序表合併為乙個新的有序順序表,並由函式返回合併後的順序表。非常經典的題目,哪怕死記硬背也應該記下來 按照順序不斷將兩個順序表表頭較小的那個存入新錶中,操作結束後,看哪個表還有剩餘,將剩下的部分加到新錶後面。線性表採用動態分配空間的方法,最大容量為maxsize。bool merge se...

合併兩個有序表 順序表

問題描述 編制乙個能演示將兩個有序表合併為乙個有序表的程式。基本要求 已知遞增有序線性表la和lb,現將la和lb合併到lc,lc也是遞增有序的。測試資料 la 3,5,8,11 lb 2,6,8,9,11,15,20 合併後的lc 2,3,5,6,8,9,11,15,20 includeconst...

兩個有序順序表的合併

儲存結構 typedef struct sqlist 1 初始化線性表la,lb,lc 2 設定變數,i,j,k。i控制la元素下標,j控制lb的元素下標,k控制l c3 當其中某一線性表放入完成時,將另外線性表後面的直接放下去。初始化 void initlist sqlist l 建立線性表函式 ...