顺序表应用5:有序顺序表归并

题目描述

已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。

输入

输入分为三行:
第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;
第二行输入m个有序的整数,即为表A的每一个元素;
第三行输入n个有序的整数,即为表B的每一个元素;

输出

输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。

示例输入

5 3
1 3 5 6 9
2 4 10

示例输出

1 2 3 4 5 6 9 10


#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 100              
#define  LISTSIZE 10                          
#define  OVERFLOW -1
#define  OK 1
typedef int ElemType;
typedef struct                                  
{
    ElemType * elem;
    int length;
    int listsize;
} Sqlist;

int SqInitial(Sqlist &L)                          
{
    L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));
    if (!L.elem)  exit(OVERFLOW); // 当前存储空间已满;
    L.length=0;
    L.listsize=LISTSIZE;
    return OK;
}

int ListInsert(Sqlist &L,int i,ElemType e)      // 在顺序表L的第 i 个元素之前插入新的元素e,      
{
    if(i<1|| i > L.length+1) printf("ERROR!");// 插入位置不合法


    if(L.length>=L.listsize)
    {
        ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)
                                            *sizeof(ElemType));
        if(!newbase)   return  OVERFLOW; 当前存储空间已满;
        L.elem=newbase;
        L.listsize+=LISTINCREASMENT;    
    }
    ElemType *  q=&(L.elem[i-1]);
    ElemType *  p;
    for(p=&(L.elem[L.length-1]); p>=q; --p)
        *(p+1)=*p; // 插入位置及之后的元素右移;
    *q=e; // 插入e;

    ++L.length;  // 表长增1;
    return OK;
}
void he(Sqlist &Lb,Sqlist L,Sqlist La)//将表L表La的元素按从小到大插入表Lb;
{
    int i=0,k=0,j=0;
    while(L.length&&La.length)//表L,表La不为空时;
    {
        if(L.elem[i]<La.elem[j])
        {
            Lb.elem[k]=L.elem[i];
            L.length--;i++;k++;
        }
        else
        {
             Lb.elem[k]=La.elem[j];
            La.length--;j++;k++;
        }
    }
    while(L.length)//表L不为空表La为空
    {
        Lb.elem[k]=L.elem[i];i++;k++;
        L.length--;
    }
    while(La.length)//表La不为空L为空;
    {
         Lb.elem[k]=La.elem[j];
            La.length--;j++;k++;
    }
}
int main()
{
    int i,j,k,m,n,h,len;
        Sqlist L;//表的定义;
        SqInitial(L);//表的初始化;
        Sqlist La;
        SqInitial(La);
        Sqlist Lb;
        SqInitial(Lb);
        scanf("%d%d",&len,&m);
        for(j=1;j<=len; j++)
        {
            scanf("%d",&k);
            ListInsert(L,j,k);//表元素的插入;
        }
        for(h=1;h<=m;h++)
        {
            scanf("%d",&k);
            ListInsert(La,h,k);//表元素的插入;
        }
        he(Lb,L,La);//两表合成一表;
        for(j=1;j<=Lb.length;j++)//表元素的输出;
        {
            if(j!=Lb.length) printf("%d ",Lb.elem[j-1]);
            else
                printf("%d\n",Lb.elem[j-1]);
        }
}




#include<iostream>
#include<algorithm>


using namespace std;


const int maxn=20010;


typedef struct
{
    int *emue;
    int lengh;
}lis;


void initlist(lis *L)
{
    L->emue=new int [maxn];
    L->lengh=0;
}


void creat(lis &L, int k)
{
    L.lengh=k;
    for(int i=0;i<L.lengh;i++)
    {
        cin>>L.emue[i];
    }
}
void merger(lis &L1, lis &L2, lis &L3)
{
    int k=0, i=0, j=0;
    while(i<L1.lengh&&j<L2.lengh)
    {
        if(L1.emue[i]>L2.emue[j])
        {
            L3.emue[k]=L2.emue[j];
            j++;
            k++;
        }
        else
        {
            L3.emue[k]=L1.emue[i];
            i++;
            k++;
        }
    }
    for(int n=i;n<L1.lengh;n++)
    {
        L3.emue[k]=L1.emue[n];
        k++;
    }
    for(int n=j;n<L2.lengh;n++)
    {
        L3.emue[k]=L2.emue[n];
        k++;
    }
    L3.lengh=k;
}
int main()
{
    lis L1, L2, L3;
    int m, n;
    cin>>n>>m;
    initlist(&L1);
    creat(L1, n);
    initlist(&L2);
    creat(L2, m);
    initlist(&L3);
    merger(L1, L2, L3);
    for(int i=0;i<L3.lengh;i++)
        cout<<L3.emue[i]<<" ";
    return 0;
}


#include <iostream>
using namespace std;
 int a[10010],b[10010],c[10100];
 int i,j;
 int m,n,k;
void merger(int a[],int b[],int c[])
{
      k=0;
     i=0,j=0;
     while(i<n&&j<m)
     {
          if(a[i]>b[j])
          {
              c[k++]=b[j++];
          }
          else
            c[k++]=a[i++];
     }
     while(i<n)
     {
         c[k++]=a[i++];
     }
     while(j<m)
     {
         c[k++]=b[j++];
     }
}
int main()
{
    cin>>n>>m;
    for(i=0;i<n;i++)
        cin>>a[i];
    for(j=0;j<m;j++)
        cin>>b[j];
    merger(a,b,c);
     for(i=0;i<k-1;i++)
        cout<<c[i]<<" ";
        cout<<c[k-1]<<endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delta3d角色注册机制

角色注册主要通过继承自类dtDAL::ActorPluginRegistry类来实现&#xff0c;重写其中的RegisterActorTypes()即可&#xff1b;在对象工厂ObjectFactory中保存了“角色类型到负责创建角色对象的全局函数”的Map&#xff1b; 关键函数有&#xff1a; dtCore::RefPtr<BaseActor…

Docker 使用Dockerfile构建自己的docker服务(三)

先介绍一下DockerFile文件的一些指令说明 DockerFile的指令 FROM 基础镜镜像&#xff0c;一切从这里开始构建 MAINTAINER 镜像是谁写的&#xff0c;姓名邮箱 RUN 镜像构建的时候需要运行的$令 ADD 步骤&#xff0c;tomcat镜像&#xff0c; 这个tomcat压缩包!添加内容 WORKDI…

数据结构实验之栈一:进制转换

题目描述 输入一个十进制整数&#xff0c;将其转换成对应的R&#xff08;2<R<9)进制数,并输出。输入 第一行输入需要转换的十进制数&#xff1b;第二行输入R。输出 输出转换所得的R进制数。示例输入 1279 8 示例输出 2377 #include <stdio.h> #include <stdlib.…

Delta3d动态角色层

DAL 采用一种灵活的、非侵入式的机制来暴露游戏角色的属性信息。 其中两大基础组件就是角色代理和角色属性。角色代理组件就是对底层游戏角色的一个封装&#xff0c;维护单个游戏角色的所有属性信息。而属性组件通过提供对单个游戏角色的所有属性的属性数据访问器来暴露角色的属…

Hbase Shell Filter 过滤

Get 和 Scan 操作都可以使用过滤器来设置输出的范围&#xff0c;类似于 SQL 里面的 Where 查询条件。使用 show_filters 命令可以查看当前 HBase 支持的 过滤器类型。 show_filters使用过滤器的语法格式&#xff1a; scan 表名,{Filter > ”过滤器(比较运算符,’比较器’)…

equals 和 == 的区别?知乎转载

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/26872848/answer/34364603 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 简单易懂 Java 语言里的 equals方法其实是交给开发者去覆写…

ElasticSearch sql 插件安装

PS&#xff1a;6.3 开始 ElasticSearch 自身已经支持SQL查询。 github地址&#xff1a;https://github.com/NLPchina/elasticsearch-sql 一、在线安装 直接执行 ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.…

Delta3d组件机制

dtGame::GMComponent主要用于处理系统中的消息&#xff0c;给系统动态的添加功能&#xff0c;增加系统的可维护性&#xff0c; 简单来说&#xff0c;一个游戏管理器组件就是一个由游戏管理器管理的可以处理和发送消息的对象。它不像游戏角色&#xff0c;游戏管理器组件接受系统…

zookpeer实现对服务器动态上下线的监听

服务器动态上下线程序的工作机制 服务器代码&#xff1a; 补充&#xff1a;volatile关键字&#xff1a;java中一切都是对象&#xff0c;当多个线程操作同一个对象时候&#xff0c;该对象会放在堆内存中&#xff0c;而多个线程相当于在多个栈中&#xff0c;当A线程想要去除对…

ElasticSearch6.x 7.x Elasticdump 在线安装、离线安装

官网&#xff1a;elasticdump - npm ElasticDump是一个ElasticSearch的数据导入导出开源工具包&#xff0c;方便使用。 官方地址&#xff1a;官方地址&#xff1a;https://github.com/taskrabbit/elasticsearch-dump 一. 安装npm&#xff0c;node # 下载安装包 wget https:/…

用LuaBridge为Lua绑定C/C++对象

最近为了总结Lua绑定C/C对象的各种方法、第三方库和原理&#xff0c;学习了LuaBridge库为Lua绑定C/C对象&#xff0c;下面是学习笔记&#xff0c;实质是对该库的 Reference Manual 基本上翻译了一遍&#xff0c;学习过程中测试代码&#xff0c;放在 我的github 上。 LuaBridge的…

H5动画制作流程没写完。。。

通过 keyframes 规则&#xff0c;您能够创建动画。创建动画的原理是&#xff0c;将一套 CSS 样式逐渐变化为另一套样式。在动画过程中&#xff0c;您能够多次改变这套 CSS 样式。以百分比来规定改变发生的时间&#xff0c;或者通过关键词 "from" 和 "to"&a…

串的基本操作

#include <iostream> #include <algorithm> #include <cstring> #define sqtrmax 1000 using namespace std; typedef struct { char *data; int length; } sqtr; void StrAssign (sqtr &S, char *chars); //赋值 void Destroy(sq…

Result window is too large, from + size must be less than or equal to: [10000] but was [12390]. See

ES 查询报错 Caused by: java.lang.IllegalArgumentException: Result window is too large, from size must be less than or equal to: [10000] but was [12390]. See the scroll api for a more efficient way to request large data sets. This limit can be set by chan…

Delta3d插件机制

Delta3d插件机制主要通过以下两个类实现&#xff1a; class MainWindow;/**Abstract interface class for STAGE plugins*/class Plugin{public:virtual ~Plugin() {} /** Is called after instantiation */virtual void Create() {}/** Is called before destruction */virt…

java中泛型学习总结

为什么需要使用泛型: 1):存储任意类型的数据在集合中 ,但是取出来都是Object类型的,此时就得强转.List list new ArrayList();list.add(1); //Interger类型Object ele list.get(0); //现在需要调用Interger类中的方法I nterger num (Interger) ele;System.out.println(num);…

数据结构实验之栈:行编辑器

题目描述 一个简单的行编辑程序的功能是&#xff1a;接受用户从终端输入的程序或数据&#xff0c;并存入用户的数据区。 由于用户在终端上进行输入时&#xff0c;不能保证不出差错&#xff0c;因此&#xff0c;若在编辑程序中&#xff0c;“每接受一个字符即存入用户数据区”的…

CDH、CM下载403,Cloudera收费无法下载解决,CDH安装包下载

CDH下载 6.3.2 链接: https://pan.baidu.com/s/1e1LmRY7aHQSCMJq3Lz6DtA 密码: 1vje --来自百度网盘超级会员V6的分享6.3.1 链接: https://pan.baidu.com/s/1Xsj_zDvuJ12q3pGTY77BRg 密码: f9h3 --来自百度网盘超级会员V6的分享6.2.1 链接: https://pan.baidu.com/s/10s7…

别说“我已经很努力了”

转自&#xff1a;http://blog.csdn.net/foruok/article/details/40247543 我们程序员的努力与挣扎有时非常尴尬&#xff0c;如果没有结果&#xff0c;都是徒然&#xff0c;都是说不得说不得…… 我自己做项目经理时&#xff0c;干的项目也经常延期……非常惭愧。而延期其实对研…

Java集合框架-概述

Java集合框架的由来: 其实在Java2(jdk1.2)之前&#xff0c;Java是没有完整的集合框架的。它只有一些简单的可以自扩展的容器类&#xff0c;比如Vector&#xff0c;Stack&#xff0c;Hashtable等。 为什么存在容器类: 容器类(集合类)可以存储多个数据,既然数组可以存储多个数据…