已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)
输入
输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度; 第二行为n个自然数构成的非递减顺序线性表; 第三行为自然数m,表示第二个非递减顺序线性表的长度; 第四行为m个自然数构成的非递减顺序线性表。
输出
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入
2
1 3
3
2 3 6
样例输出
1 2 3 3 6
#include<iostream>
#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;i<L1->length;i++)
{
L3->data[L3->length++] = L1->data[i];
}
for(int i=0;i<L2->length;i++)
{
L3->data[L3->length++] =L2->data[i];
}
for(int i=0;i<L3->length;i++)
{
for(int j=i;j<L3->length;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;i<L3->length;i++)
{
cout<<L3->data[i]<<" ";
}
return 0;
}