有序顺序表的合并操作的实现
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)输入输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;
第二行为n个自然数构成的非递减顺序线性表;
第三行为自然数m,表示第二个非递减顺序线性表的长度;
第四行为m个自然数构成的非递减顺序线性表。
输出输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入2
1 3
3
2 3 6
样例输出1 2 3 3 6
#include
#include<stdlib.h>
using namespace std;
typedef struct
{
int data[100];
int length;
}List;
void init(List &L) //初始化
{
L=(List)malloc(sizeof(List));
L->length=0;
}
void add(List *&L,int a[],int length)//添加
{
for(int i=0;i<length;i++)
{
L->data[i]=a[i];
}
L->length=length;
}
void combine(List *&L1,List *&L2,List *&L3)//联合
{
for(int i=0;ilength;i++)
{
L3->data[L3->length++]=L1->data[i];
}
for(int i=0;ilength;i++)
{
L3->data[L3->length++] =L2->data[i];
}
for(int i=0;ilength-1;i++)
{
for(int j=i+1;jlength;j++)
{
if(L3->data[i]>L3->data[j])
{
int temp=L3->data[i];
L3->data[i]=L3->data[j];
L3->data[j]=temp;
}
}
}
}
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int m;
cin>>m;
int b[m];
for(int i=0;i<m;i++)
{
cin>>b[i];
}
List *L1,*L2,*L3;
init(L1);init(L2);init(L3);
add(L1,a,n);
add(L2,b,m);
combine(L1,L2,L3);
for(int i=0;ilength;i++)
{
cout<data[i]<<" ";
}
return 0;
}