第1个回答 2012-10-07
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct
{
int elem[MAXSIZE];
int last;
}sqlist;
sqlist *init_sqlist()
{
sqlist *L;
L=(sqlist *)malloc(sizeof(sqlist));
L->last=-1;
return L;
}
void creatsqlist(sqlist *L)
{
int i;
printf("%d",L->last);
scanf("%d",&(*L).last);
for(i=0;i<=(*L).last;i++)
scanf("%d",&(*L).elem[i]);
}
void merge(sqlist *LA,sqlist *LB,sqlist *LC)
{
int i,j,k;
i=0,j=0,k=0;
while(i<=LA->last&&j<=LB->last)
if(LA->elem[i]<=LB->elem[j])
{
LC->elem[k]=LA->elem[i];
i++;
k++;
}
else
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
while(i<=LA->last)
{
LC->elem[k]=LA->elem[i];
i++;
k++;
}
while(j<=LB->last)
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
LC->last=LA->last+LB->last+1;
}
void main()
{
int i;
sqlist *p,*q,*s;
p=init_sqlist();
q=init_sqlist();
s=init_sqlist();
creatsqlist(p);
creatsqlist(q);
merge(p,q,s);
for(i=0;i<=s->last;i++)
printf("%d",s->elem[i]);
}本回答被网友采纳