有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。
题目要求:有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。
代码实现:
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; }
完整程序:
#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]); }
运行结果:
请输入线性表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的元素也是从小到大的升序排列。相关推荐
- 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
题目要求:设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性. 代码实现: void Insert(SqList *va,int x) {int i;if( ...
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
[例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...
- oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...
sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...
- 【数据结构和算法笔记】c语言实现顺序表和链表
线性表的定义: 线性表中元素关系是一对一的,元素个数是有限的 序列补充: 存在唯一开始元素和终端元素,除此之外,每个元素只有唯一的前驱元素和后继元素 线性表的长度: 线性表中所含元素的个数(n),n= ...
- c语言合并两个顺序表算法,顺序表的两种合并操作(C语言)
#include #include //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; #define OK 1; #define ERROR 0; #de ...
- 三元组转化矩阵 java_矩阵转置算法及代码实现(三元组顺序表)
矩阵的转置实际上就是将数据元素的行标和列标互换,即 T(i,j) = M(j,i) .例如: 相应地,三元组表转变为: 图2 三元组表 矩阵的转置,经历了三个步骤: 矩阵的行数 n 和列数 m 的值交 ...
- C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...
c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...
- java合并多个表格为一个_多个DataTable的合并成一个新表
有时我们知道了两个DataTable1和DataTable2,我们希望将它们合并为一个新的DataTable(下面的例子中命名为了newDataTable),这就分为两种情况:DataTable1和D ...
- 多个DataTable的合并成一个新表
有时我们知道了两个DataTable1和DataTable2,我们希望将它们合并为一个新的DataTable(下面的例子中命名为了newDataTable),这就分为两种情况:DataTable1和D ...
最新文章
- ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互 entity-framework(MySQL/MariaDB 版)
- arduino如何调用mysql,【 实测可用 】Arduino 直接访问 mysql
- 【C 语言】结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )
- 好文推荐 | MySQL binlog应用场景与原理深度剖析
- ack机制之代码实现,实现BaseRichBolt的方式,使用BaseBasicBolt的方式实现BaseRichBolt发ack和fail的功能
- 智能布线系统,“智”在何方
- 子元素的margin-top会影响父元素
- LTNS的完整形式是什么?
- CV2 puttext不能显示中文问题
- python实例变量命名规则_Java,Python的一些命名规范
- Linux 查看磁盘的属性,Windows XP 查看磁盘属性(转)
- 在Centos下启用mysql的远程访问账号
- win7资源管理器从计算机开始,熟练用Win7电脑从Win7资源管理器入门
- macos安装vscode_什么!你还没有安装Flutter!
- Linux中/proc目录下文件详解(一)
- ubuntu安装gcc和g++
- ubuntuv20启动界面美化_小米任务栏美化软件下载-小米任务栏美化官方版软件下载v1.0...
- fatal error: gnu/stubs-32.h: No such file or directory
- Thingsboard数据处理学习记录
- 化繁为简:Swift剔除数组中重复元素的几种姿势