求救大佬,用顺序表将两个已经从小到大排好顺序的数组合并并且输出。
#define MAX 20#include <stdio.h>
typedef struct
{
int last;
int d;
}Seq;
Seq LA;
Seq LB;
Seq LC;
int mergeList(Seq LA,Seq LB,Seq LC)
{
int i,j,k,l;
i=j=k=0;
while(i<=LA.last&&j<=LB.last)
if(LA.d<=LB.d)
{
LC.d=LA.d;
i++;
k++;
}
else
{
LC.d=LB.d;
j++;
k++;
}
while(i<=LA.last)
{
LC.d=LA.d;
i++;k++;
}
while(j<=LB.last)
{
LC.d=LB.d;
i++;j++;
}
LC.last=LA.last+LB.last+1;
return 0;
}
int main()
{ int i =0;
LA.d={0,1,2,3,4,5,5,9,10};
LB.d={3,4,6,7,8};
LC.d={0};
int mergeList(LA,LB,LC);
for (0;i<=13;i++)
printf("%d\n",LC.d);
}
我在main函数这个主函数之上写的都没有报错,但是在main函数内,想给两个数组由我自己赋值,并且合并,然后利用for循环,逐个输出,但是已经有一个小时了,还没有得到解决,也看不出错误在哪,烦请大佬不吝赐教,万分感谢,好人一生平安!
其实不用定义结构体
#define MAX 20
#include <stdio.h>
int mergeList(int *LA,int *LB,int *LC,int length_LA,int length_LB)
{
int i,j,k,l;
i=j=k=0;
while(i<length_LA&&j<length_LB)
{
if(LA < LB)
{
LC = LA;
i++;
k++;
}
else
{
LC = LB;
j++;
k++;
}
}
while(i<length_LA)
{
LC = LA;
i++;
k++;
}
while(j<length_LB)
{
LC = LB;
j++;
k++;
}
return k;
}
int main()
{ int i =0;
int LA[]={0,1,2,3,4,5,5,9,10};
int LB[]={3,4,6,7,8};
int LC={0};
int length_LA = sizeof(LA) / sizeof(int);
int length_LB = sizeof(LB) / sizeof(int);
int k = mergeList(LA,LB,LC,length_LA,length_LB);
for (i=0;i<k;i++)
{
printf("%d\n",LC);
}
return 0;
}
页:
[1]