我写了一个顺序的
#include<stdio.h>
#define OVERFLOW 0
#define NULL 0
#define OK 1
#define MAXSIZE 1024
typedef int elemtype;
typedef struct
{
elemtype vec[MAXSIZE];
int len;
}sequenlist;
int createsqlist(sequenlist *L,int k)
{
int i;
for(i=0;i<k;i++)
scanf("%d",&L->vec[i]);
return OK;
}
int compositor(sequenlist *M,int k)
/*排序*/
{
int i,j,d,t;
for(i=0;i<k;i++)
{
d=i;
for(j=i;j<k;j++)
{
if((M->vec[j])>(M->vec[d]))
d=j;
}
t=M->vec[i];
M->vec[i]=M->vec[d];
M->vec[d]=t;
}
return OK;
}
int add(sequenlist *M,sequenlist *L,sequenlist *B)
/*合并*/
{
int i,j,k=0;
B->len=M->len+L->len;
for(i=0,j=0;;)
{
if(M->vec[i]>L->vec[j])
{
B->vec[k]=M->vec[i];
k++;
i++;
if(i>=M->len)
break;
}
else
{
B->vec[k]=L->vec[j];
k++;
j++;
if(j>=L->len)
break;
}
}
if(i>=M->len)
{
for(;j<=L->len;j++,k++)
B->vec[k]=L->vec[j];
}
if(j>=L->len)
{
for(;i<=M->len;i++,k++)
B->vec[k]=M->vec[i];
}
return OK;
}
void main()
{
int i,n,m;
sequenlist *L,a,*M,b,*B;
printf("\n Input the length of the list L:\n");
scanf("%d",&n);
L=&a;
L->len=n;
createsqlist(L,n);
printf("\n Input the length of the list M:\n");
scanf("%d",&m);
M=&b;
M->len=m;
createsqlist(M,m);
compositor(M,m);
compositor(L,n);
add(M,L,B);
printf("Output the list and its length B:\n");
for(i=0;i<B->len;i++)
printf("%d
",B->vec[i]);
printf("\n This sequenlist's length is %d",B->len);
getch();
}