/*将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表*/
#include<stdio.h>
#include<stdlib.h>
#define InitSize 50
typedef int ElemType;
typedef struct{
ElemType *data;
int length;
int maxSize;
}SqList;
bool InitList(SqList &L)
{
L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
L.length = 0;
return true;
}
bool printList(SqList L)
{
for(int i=0;i<L.length;++i)
printf("%d ",L.data[i]);
printf("\n");
return true;
}
bool concatList(SqList &C,SqList A,SqList B)
{
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++] = B.data[j++];
else
C.data[k++] = A.data[i++];
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 main()
{
int i;
SqList A,B,C;
InitList(A);
InitList(B);
InitList(C);
C.maxSize = InitSize;
int a[5] = {1,3,5,7,9};
int b[5] = {2,4,6,8,10};
for(i=0;i<5;++i)
{
A.data[i] = a[i];
B.data[i] = b[i];
++A.length;
++B.length;
}
printList(A);
printList(B);
concatList(C,A,B);
printList(C);
}
合并两个有序表,使其成为新的有序表
最新推荐文章于 2022-08-04 20:51:01 发布