#include <iostream> #define MAXSIZE 100 using namespace std; typedef int DataType; //使int重命名为DataType typedef struct{ DataType data[MAXSIZE]; //定义DataType为int ,存储结构为顺序存储 int length; }SeqList;
/*
问题描述:有序的线性表A,B,把他们合并成C并且还是从小到大有序
*/ //创建顺序表 void create_List(SeqList &L){ cout<<"请输入要输入的数据个数:"; cin>>L.length; cout<<"请输入要输入的数据:"<<" "; for(int i=0;i<L.length;i++){ cin>>L.data[i]; } } //输出顺序表中的元素 void out_List(SeqList &L){ //判断线性表是否为空 if(L.length != 0){ for(int i=0;i<L.length;i++){ cout<<L.data[i]<<" "; } }else{ cout<<"线性表为空"<<" "; } } //将有序的顺序表A,B合并成C void merge(SeqList &A,SeqList &B,SeqList &C){ int i,j,k; i=0;j=0;k=0; while(i<A.length && j<B.length){ if(A.data[i]>=B.data[j]){ C.data[k]=B.data[j]; j++; k++; }else{ C.data[k]=A.data[i]; i++; k++; } } while(i<A.length){ C.data[k]=A.data[i]; k++; i++; } while(j<B.length){ C.data[k]=B.data[j]; k++; j++; } C.length=A.length+B.length; } int main(int argc, char** argv) { SeqList A,B,C; create_List(A); create_List(B); out_List(A); cout<<" "; out_List(B); cout<<" "; merge(A,B,C); out_List(C); cout<<" "; return 0; }