假設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 建立線性表函式 ...