鱼C论坛

 找回密码
 立即注册
查看: 3668|回复: 1

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

[复制链接]
发表于 2020-10-25 16:46:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#define MAX 20
#include <stdio.h>

typedef struct
{
        int last;
        int d[MAX];
}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[i]<=LB.d[j])
                {
                        LC.d[k]=LA.d[i];
                        i++;
                        k++;
                }
                else
                {
                        LC.d[k]=LB.d[j];
                        j++;
                        k++;
                }
       


        while(i<=LA.last)
        {
                LC.d[k]=LA.d[i];
                i++;k++;
               
        }       
        while(j<=LB.last)
        {
                LC.d[k]=LB.d[j];
                i++;j++;
        }
       
        LC.last=LA.last+LB.last+1;
       
       
        return 0;
}


int main()
{        int i =0;
        LA.d[20]={0,1,2,3,4,5,5,9,10};
        LB.d[20]={3,4,6,7,8};
        LC.d[20]={0};
        int mergeList(LA,LB,LC);
       

        for (0;i<=13;i++)
                printf("%d\n",LC.d[i]);       
}
QT6KKX5BUM9`K)~][VV)0LT.png


我在main函数这个主函数之上写的都没有报错,但是在main函数内,想给两个数组由我自己赋值,并且合并,然后利用for循环,逐个输出,但是已经有一个小时了,还没有得到解决,也看不出错误在哪,烦请大佬不吝赐教,万分感谢,好人一生平安!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-25 19:27:11 | 显示全部楼层
其实不用定义结构体
  1. #define MAX 20
  2. #include <stdio.h>

  3. int mergeList(int *LA,int *LB,int *LC,int length_LA,int length_LB)
  4. {
  5.                
  6.         int i,j,k,l;
  7.         i=j=k=0;
  8.         while(i<length_LA&&j<length_LB)
  9.         {
  10.                
  11.                 if(LA[i] < LB[j])
  12.                 {
  13.                         LC[k] = LA[i];
  14.                         i++;
  15.                         k++;
  16.                 }
  17.                 else
  18.                 {
  19.                         LC[k] = LB[j];
  20.                         j++;
  21.                         k++;
  22.                 }
  23.         }
  24.         
  25.                 while(i<length_LA)
  26.                 {
  27.                         LC[k] = LA[i];
  28.                         i++;
  29.                         k++;
  30.                 }
  31.                
  32.                 while(j<length_LB)
  33.                 {
  34.                         LC[k] = LB[j];
  35.                         j++;
  36.                         k++;
  37.                 }
  38.                     
  39.         return k;
  40. }


  41. int main()
  42. {        int i =0;
  43.         int LA[]={0,1,2,3,4,5,5,9,10};
  44.         int LB[]={3,4,6,7,8};
  45.         int LC[20]={0};
  46.         int length_LA = sizeof(LA) / sizeof(int);
  47.                 int length_LB = sizeof(LB) / sizeof(int);
  48.         int k = mergeList(LA,LB,LC,length_LA,length_LB);
  49.         
  50.         for (i=0;i<k;i++)
  51.         {
  52.                 printf("%d\n",LC[i]);
  53.                 }
  54.         
  55.         return 0;
  56. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 22:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表