資料結構 將兩個有序順序表合成一個有序順序表
阿新 • • 發佈:2018-12-09
題目:
有順序表A和B,其元素均按從小到大的升序排列,編寫一個演算法,將它們合併成一個順序表C,要求C的元素也按從小到大的升序排列
程式碼:
#include<stdio.h> #define MAX 100 typedef int datatype; typedef struct { datatype a[MAX]; int size; }sequence_list; void init(sequence_list *L) { L->size=0; } void function(sequence_list *L,sequence_list *R) { int i,j,k; for(i=0;i<R->size;i++) { for(j=L->size-1;j>=0;j--) { if(R->a[i]<L->a[j]) { L->a[j+1]=L->a[j]; if(j==0) L->a[0]=R->a[i]; } else if(R->a[i]>=L->a[j]) { L->a[j+1]=R->a[i]; break; } } L->size++; } } int main() { sequence_list L,R; datatype a; int i; init(&L); init(&R); printf("請從小到大輸入第一個順序表,以0結尾:"); scanf("%d",&a); while(a) { L.a[L.size]=a; L.size++; scanf("%d",&a); } printf("\n請從小到大輸入第二個順序表,以0結尾:"); scanf("%d",&a); while(a) { R.a[R.size]=a; R.size++; scanf("%d",&a); } function(&L,&R); printf("\n合成過後的順序表是:"); for(i=0;i<L.size;i++) printf("%d ",L.a[i]); return 0; }