AIML 发表于 2020-10-25 16:46:55

求救大佬,用顺序表将两个已经从小到大排好顺序的数组合并并且输出。

#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循环,逐个输出,但是已经有一个小时了,还没有得到解决,也看不出错误在哪,烦请大佬不吝赐教,万分感谢,好人一生平安!

巴巴鲁 发表于 2020-10-25 19:27:11

其实不用定义结构体
#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]
查看完整版本: 求救大佬,用顺序表将两个已经从小到大排好顺序的数组合并并且输出。