#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<<"请输入要输入的数据:"<<"\n";
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<<"线性表为空"<<"\n";
}
}
//将有序的顺序表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<<"\n";
out_List(B);
cout<<"\n";
merge(A,B,C);
out_List(C);
cout<<"\n";
return 0;
}