Manchester


私信TA

用户名:wenyajie

访问量:312886

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 62762
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:
输入线性表LA,LB

据算法:首先i=0指向LA第一个元素,j=0指向LB第一个元素,k=0指向LC第一个元素

从LA,LB中第一个元素开始比较,若LA[i]<=LB[j]  ,则LC[k]=LA[i],同时i++,k++(i,k指针后移)
若LA[i]>LB[j]  ,则LC[k]=LB[j],同时j++,k++(j,k指针后移)

以上比较,插入操作当LA或者LB有一个遍历完结束

把未遍历完的表(LA或LB)中未遍历的部分加到LC最后一个元素后面

按要求输出LC


注意事项:
题目中:m大于等于0  n大于等于0,当输入的m和n 都为0 时,不能有任何输出,直接换行合并下一组数据
在代码中加了排序,怕输入数据不是非递减
参考代码:

#include<stdio.h>
#include<malloc.h>
int * creat_LA(int m);
int * creat_LB(int n);
int * creat_LC(int *LA,int *LB,int x,int m,int n);
void output_LC(int *LC,int x);
void sort_(int *L,int d);
/*在代码中加了排序,怕输入数据不是非递减*/
int main()
{
   int *LA=NULL,*LB=NULL,*LC=NULL;
   int m,n;

   while(scanf("%d",&m)!=EOF)
     {

         LA=creat_LA(m);
         scanf("%d",&n);
         LB=creat_LB(n);

         LC=creat_LC(LA,LB,m+n,m,n);
         if(m==0&&n==0)
         printf("\n");
         else
         output_LC(LC,n+m);

         free(LA);
         free(LB);
         free(LC);

     }
return 0;
}
/*---------------------------------------------*/
int * creat_LA(int m)
{
   int *la=(int *)malloc(m*sizeof(int));

     for(int i=0;i<m;i++)
      scanf("%d",&la[i]);

     sort_(la,m);
      return la;

}
/*---------------------------------------------*/
int * creat_LB(int n)
{
   int *lb=(int *)malloc(n*sizeof(int));

     for(int i=0;i<n;i++)
      scanf("%d",&lb[i]);

     sort_(lb,n);
      return lb;

}
/*---------------------------------------------*/
int * creat_LC(int *LA,int *LB,int x,int m,int n)
{

    int *lc=(int *)malloc(x*sizeof(int));

    int i=0,j=0,k=0;

    while(i<m&&j<n)
        if(LA[i]<=LB[j])
             lc[k++]=LA[i++];
           else
             lc[k++]=LB[j++];
    

    while(i<m)
    lc[k++]=LA[i++];

    while(j<n)
    lc[k++]=LB[j++];
 
return lc;
}
/*---------------------------------------------*/
void output_LC(int *LC,int x)
{
   for(int i=0;i<x-1;i++)
    printf("%d ",LC[i]);
    printf("%d\n",LC[x-1]);
}
/*---------------------------------------------*/
void sort_(int *L,int d)
{

   int min,term;

   for(int i=0;i<d;i++)
    {
       min=i;
       for(int j=i;j<d;j++)
          {
             if(L[j]<L[min])
             min=j;
          }

          term=L[i];
          L[i]=L[min];
          L[min]=term;

    }

}

别忘点赞哦-.-!

 

0.0分

8 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#include <stdio.h>
#include <stdlib.h>
#define max 101
typedef int DataType;
typedef struct
{
DataType date[max];
int length;
}Seqlist;
void InitList(Seqlist *L)
{
L->length=0;
}
void create(Seqlist *L,DataType n)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&L->date[i]);
L->length=i;
}
void change(Seqlist *L1,Seqlist *L2,Seqlist *L3)
{
int i=0,j=0,k=0;
while(i<L1->length&&j<L2->length)
{
if(L1->date[i]<=L2->date[j])
{
L3->date[k]=L1->date[i];
k++;
i++;
}
else
{
L3->date[k]=L2->date[j];
k++;
j++;
}
}
if(i==L1->length)
{
while(j<L2->length)
{
L3->date[k]=L2->date[j];
k++;
j++;
}
}
if(j==L2->length)
{
w
2018-10-12 09:08:43