1. 题目要求:有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。

  2. 代码实现:

    void merge(SqList A,SqList B,SqList *C)
    {int i=0,j=0,k=0;while(i<A.length && j<B.length){if(A.data[i]<B.data[j])C->data[k++]=A.data[i++];elseC->data[k++]=B.data[j++];}while(i<A.length) C->data[k++]=A.data[i++];while(j<B.length) C->data[k++]=B.data[j++];C->length=k;
    }
    
  3. 完整程序:

    #include<stdio.h>
    #define MAXSIZE 30
    typedef struct
    {int data[MAXSIZE];int length;
    }SqList;
    void merge(SqList A,SqList B,SqList *C)
    {int i=0,j=0,k=0;while(i<A.length && j<B.length){if(A.data[i]<B.data[j])C->data[k++]=A.data[i++];elseC->data[k++]=B.data[j++];}while(i<A.length) C->data[k++]=A.data[i++];while(j<B.length) C->data[k++]=B.data[j++];C->length=k;
    }
    int main()
    {int m,n;printf("请输入线性表A的长度m:");scanf("%d",&m);printf("请输入线性表B的长度n:");scanf("%d",&n);SqList A,B,C;printf("请输入线性表A的数据(保证从小到大有序):");for(int i=0;i<m;i++)scanf("%d",&A.data[i]);A.length=m;printf("请输入线性表B的数据(保证从小到大有序):"); for(int i=0;i<n;i++)scanf("%d",&B.data[i]);B.length=n;merge(A,B,&C);printf("A和B合并后的序列为:"); for(int t=0;t<C.length;t++)printf("%d ",C.data[t]);
    }
    
  4. 运行结果:

    请输入线性表A的长度m:3
    请输入线性表B的长度n:5
    请输入线性表A的数据(保证从小到大有序):1 5 9
    请输入线性表B的数据(保证从小到大有序):2 4 9 11 17
    A和B合并后的序列为:1 2 4 5 9 9 11 17
    

有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。相关推荐

  1. 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。

    题目要求:设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性. 代码实现: void Insert(SqList *va,int x) {int i;if( ...

  2. 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。

    [例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...

  3. oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...

    sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...

  4. 【数据结构和算法笔记】c语言实现顺序表和链表

    线性表的定义: 线性表中元素关系是一对一的,元素个数是有限的 序列补充: 存在唯一开始元素和终端元素,除此之外,每个元素只有唯一的前驱元素和后继元素 线性表的长度: 线性表中所含元素的个数(n),n= ...

  5. c语言合并两个顺序表算法,顺序表的两种合并操作(C语言)

    #include #include //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; #define OK 1; #define ERROR 0; #de ...

  6. 三元组转化矩阵 java_矩阵转置算法及代码实现(三元组顺序表)

    矩阵的转置实际上就是将数据元素的行标和列标互换,即 T(i,j) = M(j,i) .例如: 相应地,三元组表转变为: 图2 三元组表 矩阵的转置,经历了三个步骤: 矩阵的行数 n 和列数 m 的值交 ...

  7. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

  8. java合并多个表格为一个_多个DataTable的合并成一个新表

    有时我们知道了两个DataTable1和DataTable2,我们希望将它们合并为一个新的DataTable(下面的例子中命名为了newDataTable),这就分为两种情况:DataTable1和D ...

  9. 多个DataTable的合并成一个新表

    有时我们知道了两个DataTable1和DataTable2,我们希望将它们合并为一个新的DataTable(下面的例子中命名为了newDataTable),这就分为两种情况:DataTable1和D ...

最新文章

  1. ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互 entity-framework(MySQL/MariaDB 版)
  2. arduino如何调用mysql,【 实测可用 】Arduino 直接访问 mysql
  3. 【C 语言】结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )
  4. 好文推荐 | MySQL binlog应用场景与原理深度剖析
  5. ack机制之代码实现,实现BaseRichBolt的方式,使用BaseBasicBolt的方式实现BaseRichBolt发ack和fail的功能
  6. 智能布线系统,“智”在何方
  7. 子元素的margin-top会影响父元素
  8. LTNS的完整形式是什么?
  9. CV2 puttext不能显示中文问题
  10. python实例变量命名规则_Java,Python的一些命名规范
  11. Linux 查看磁盘的属性,Windows XP 查看磁盘属性(转)
  12. 在Centos下启用mysql的远程访问账号
  13. win7资源管理器从计算机开始,熟练用Win7电脑从Win7资源管理器入门
  14. macos安装vscode_什么!你还没有安装Flutter!
  15. Linux中/proc目录下文件详解(一)
  16. ubuntu安装gcc和g++
  17. ubuntuv20启动界面美化_小米任务栏美化软件下载-小米任务栏美化官方版软件下载v1.0...
  18. fatal error: gnu/stubs-32.h: No such file or directory
  19. Thingsboard数据处理学习记录
  20. 化繁为简:Swift剔除数组中重复元素的几种姿势

热门文章

  1. 商家编号_caiji_003 黄道吉日
  2. 迅驰笔记本电脑怎样和TP-LINK无线路由器建立无线连接
  3. 使用Vue手写一个简易的键盘
  4. LIVE555再学习 -- 单播、多播、广播、直播、点播 都是个啥?
  5. jsfor循环终止_【JavaScript】JS中如何跳出循环/结束遍历
  6. 华为怎么分屏操作技巧_pdf文件怎么拆分页面?这些技巧堪称神操作!
  7. MySQL连表查询并统计
  8. JQuery 禁用启用滚动条方式
  9. win10安装Zookeeper3.4.12
  10. pmml_在PMML中表示预测解决方案