/*将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表*/
#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);
}
合并两个有序表,使其成为新的有序表
最新推荐文章于 2024-04-01 09:00:40 发布
该博客展示了如何将两个已排序的顺序表合并成一个新的有序顺序表,使用C语言实现。程序首先初始化顺序表,然后通过遍历和比较两个顺序表中的元素,将它们按顺序合并到第三个顺序表中。最后,输出合并后的顺序表。这个过程涉及到了基本的数据结构操作和简单的排序算法应用。
982

被折叠的 条评论
为什么被折叠?



