PTA-7-3 合并顺序表 (25 分)

7-3 合并顺序表 (25 分)

假设有两个由小到大有序的有序顺序表A和B,现要求将表A和表B并入表C中,且表C仍保持由小到大的有序性。若合并后的顺序表表长超过总容量20,则输出“not enough”。
输入格式:

第一行为一个数字n,表示下面有n组数据,每组数据包括4行;每组数据中的第一行表示表A的表长,第二行表示表A的数据元素,第三行表示表B的表长,第四行表示表B的数据元素。
输出格式:

若合并成功,输出两行信息,第一行表示合并后表C的表长,第二行表示合并后表C的数据元素,每两个元素之间用一个空格分隔;若合并后的顺序表表长超过总容量20,则输出“not enough”。
输入样例:

在这里给出一组输入。例如:

1
4
1 3 8 17
3
6 10 15
结尾无空行

输出样例:

在这里给出相应的输出。例如:

7
1 3 6 8 10 15 17
结尾无空行
#include<stdio.h>
int main(void)
{
	int n;
	int p[10000],q[10000];
	int t;	
	int a,b,j,i,k;
	while(~scanf("%d",&n))//输入多组数据
	{
		while(n--)
		{
		t=0;
	     scanf("%d",&a);
	     for(i=0;i<a;i++)
		scanf("%d",&p[i]);
		scanf("%d",&b);
		for(i=0;i<b;i++)
		scanf("%d",&q[i]);
		t=a+b;
		if(t>20)
			printf("not enough");
		else
		{
			for(i=0;i<t;i++)//将q数组的每个元素都插到p数组中去,及得到新的顺序表
			p[i+a]=q[i]; 
		for(j=1;j<t;j++)//在将其进行排序,这边选择了冒泡排序
		{
			for(i=0;i<t-j;i++)
			{
			 	if(p[i]>p[i+1])
			 	{
			 		k=p[i];
			 		p[i]=p[i+1];
			 		p[i+1]=t;
				}
		    }
		}
		printf("%d\n",t);
		for(i=0;i<t;i++)//将各个数依次打印输出
			printf("%d ",p[i]);
			printf("%d\n",p[t-1]);
	}	
  }
 }
}

 

上一篇:leetcode76.最小覆盖子串(困难)


下一篇:mezWindows的个人中心luogu(old)