AC
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int data[10020];
int length;
}sqlist;
void initial(sqlist &l,int n){
l.length=n;
}
void input(sqlist &l){
int i;
for(i=1;i<=l.length;i++)
scanf("%d",&l.data[i]);
}
void together(sqlist a,sqlist b,sqlist &c){
int i=1,j=1,t=1,q=0;
while(i<=a.length&&j<=b.length){
if(a.data[i]>b.data[j]){
c.data[t++]=b.data[j++];
}
else{
c.data[t++]=a.data[i++];
}
}
if(i>=a.length+1){
for(q=j;q<=b.length;q++)
c.data[t++]=b.data[q];
}
else{
for(q=i;q<=a.length;q++)
c.data[t++]=a.data[q];
}
t=c.length;
}
int main()
{
int m,n,i;
sqlist l1,l2,l3;
scanf("%d %d",&m,&n);
initial(l1,m);
input(l1);
initial(l2,n);
input(l2);
initial(l3,m+n);
together(l1,l2,l3);
for(i=1;i<=l3.length;i++){
if(i!=l3.length) printf("%d ",l3.data[i]);
else printf("%d\n",l3.data[i]);
}
return 0;
}
总结:
- 在while循环结束之后剩余元素怎么继续插入出了问题,不一定是短的顺序表先跳出循环,而是小的元素结尾的跳出出循环!!!
- 尽量建函数,如输入函数,可以减少输入