设有线性表A=(a1,a2,…,am),B=(b1,b2,…,bn)。试编写一个合并A,B为线性表C的算法,使得 a1, b1,a2, b2,…, am ,bm, bm+1,…,bn
当m<=n时:C= a1, b1,a2, b2,…, am ,bm, bm+1,…,bn
当m>n时: C=a1, b1,a2, b2,…, an ,bn, an+1,…,am
#include
#include
#define MAXSIZE 60
typedef struct
{
int a[MAXSIZE];
int size;
} sequencelist;
/*初始化顺序表*/
void init(sequencelist *A,sequencelist *B,sequencelist *C)
{
A->size=0;
B->size=0;
C->size=0;
}
void inputAB(sequencelist *A,sequencelist *B)
{
int a,i=0;
printf("请输入顺序表A的内容(以-1结束):\n");
do
{
scanf("%d",&a);
if(a!=-1)
{
A->a[i]=a;
A->size++;
i++;
}
}
while(a!=-1&&i
a[i]=a;
B->size++;
i++;
}
}
while(a!=-1&&i
=A.size){
C->a[i]=B.a[k];
k++;
}else{
C->a[i]=A.a[j];
j++;
}
}
else{
if(k>=B.size){
C->a[i]=A.a[j];
j++;
}
else{
C->a[i]=B.a[k];
k++;
}
}
C->size++;
}
}
void printAB(sequencelist A,sequencelist B)
{
int i;
printf("顺序表A的内容为:\n");
for(i=0; i