将两个有序的顺序表合并成一个新的有序顺序表
#include<stdio.h>
#include<malloc.h>
#define maxSize 10
//typedef int ElemType
typedef struct Sqlist
{
int data[maxSize];
int length;
int maxsize;
}Sqlist;
bool merge(Sqlist A,Sqlist B,Sqlist &C)
{
if(A.length+B.length>C.maxsize)
return false;
int i=0,j=0,k=0;
while(i<A.length&&j<B.length){
if(A.data[i]<=B.data[j])
C.data[k++]=A.data[i++];
else
C.data[k++]=B.data[j++];
}
while(i<A.length)
C.data[k++]=A.data[i++];
while(j<B.length)
C.data[k++]=B.data[j++];
C.length=k;
return true;
}
void display(Sqlist &L)
{
for(int i=0;i<L.length;i++)
{
printf("第%d的元素为:%d\n",i+1,L.data[i]);
}
}
int initSqlist(Sqlist &L){
int n;
printf("顺序表要输入的个数:");
scanf("%d",&n);
printf("\n");
L.length=n;
for(int i=0;i<n;i++){
printf("输入第%d个元素:",i+1);
scanf("%d",&L.data[i]);
}
return 1;
}
int main()
{
Sqlist A;
Sqlist B;
Sqlist C;
printf("顺序表A:\n");
initSqlist(A);
printf("顺序表B:\n");
initSqlist(B);
printf("之前的元素:\n");
printf("顺序表A的元素:\n");
display(A);
printf("顺序表B的元素:\n");
display(B);
printf("合并之后的顺序表C:\n");
C.maxsize=20;
merge(A,B,C);
display(C);
return 0;
}
截图: