题目描述
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)
输入
输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;
第二行为n个自然数构成的非递减顺序线性表;
第三行为自然数m,表示第二个非递减顺序线性表的长度;
第四行为m个自然数构成的非递减顺序线性表。
输出
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入
2
1 3
3
2 3 6
样例输出
1 2 3 3 6
参考程序
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 51
typedef struct list
{
int data[Maxsize];
int len;
}SqList;
void CreatList(SqList *&L, int a[], int n)
{
L = (SqList *) malloc (sizeof(SqList));
for(int i=0; i<n; i++)
L->data[i] = a[i];
L->len = n;
}
void Sort(SqList *&A, SqList *B)
{
for(int i=0; i<B->len; i++)
{
A->data[A->len] = B->data[i];
A->len++;
}
int temp;
for(int i=0; i<A->len; i++)
{
for(int j=i+1; j<A->len; j++)
{
if(A->data[i] > A->data[j] || A->data[i] == A->data[j])
{
temp = A->data[i];
A->data[i] = A->data[j];
A->data[j] = temp;
}
}
}
}
int main()
{
int n, m;
SqList *A, *B;
scanf("%d", &n);
int a[n];
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
CreatList(A, a, n);
scanf("\n");
scanf("%d", &m);
int b[m];
for(int i=0; i<m; i++)
scanf("%d", &b[i]);
CreatList(B, b, m);
Sort(A, B);
for(int i=0; i<A->len; i++)
printf("%d ", A->data[i]);
return 0;
}
注意
该程序仅供学习参考!