c语言将两个递增的顺序表合并为一个递减的顺序表

2023-05-16

eg:顺序表A:1 3 5 7
顺序表B:2 4 6 8
合并后的表C:8 7 6 5 4 3 2 1
**思路:**从后往前遍历顺序表A和B,如果当前A表的数大于等于B表的数,则将A表的数存入C,A的元素下标往前移一位,否则,将B表的数存入C表,B的元素下标往前移一位B;最后再把其中一个未遍历完的表存入C表。

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 
#define LISTINCREMENT 10 // 线性表存储空间的初分配增量 
#define OVERFLOW -1 
#define OK 1
typedef int ElemType;
typedef int Status;

typedef struct {
	ElemType *elem; // 存储空间基址 
	int length; // 当前长度 
	int listsize; // 当前分配的存储容量 
}SqList;

//初始化线性表 
Status InitList_Sq(SqList *L) {
	L -> elem = (ElemType *) malloc (LIST_INIT_SIZE * sizeof(ElemType));
	if (!L -> elem) exit(OVERFLOW); // 存储分配失败 
	L -> length = 0; // 空表长度为0 
	L -> listsize = LIST_INIT_SIZE; // 初始存储容量 
	return OK;
}

//创建有序表并赋值 
void Create_Sq(SqList *L) {
	int n; 
	printf("\n输入该有序表元素的个数:");
	scanf("%d", &n);
	while (n <= 0 || n > 100) {
		printf("\n非法输入,请输入大于0且小于100的数:");
    	scanf("%d", &n);
	} 
    L -> length = n; // 创建长度为n的顺序表 
    printf("\n依次输入这%d个数(从小到大输入):\n", n);
    for (int i = 0; i < n; i++) { // 输入该顺序表的元素 
    	scanf("%d", &L -> elem[i]);
	}
}

//输出有序表 
void Print_Sq(SqList L) {
	for (int i = 0; i < L.length; i++) {
		if(!i) printf("%d", L.elem[i]);
		else printf(" %d", L.elem[i]);
	}
	printf("\n");
}

//将两个有序递增的顺序表合并为一个有序递减的顺序表 
void Merge_Sq(SqList *la, SqList *lb, SqList *lc) { 
	InitList_Sq(lc); // 初始化线性表lc 
	lc -> length = la -> length + lb -> length; // lc表的长度为la表和lb表的长度和 
	int i = la -> length - 1, j = lb -> length - 1, k = 0; // 找出两表的末位置并定义新表元素的开始 
	while (i >= 0 && j >= 0) {
		if (la -> elem[i] >= lb -> elem[j]) { // 如果当前la表的元素大于等于lb表的元素,将la的元素赋给lc,同时la的元素往前挪一位 
			lc -> elem[k++] = la -> elem[i];
			i--;
		} else {  // 如果当前lb表的元素大于la表的元素,将lb的元素赋给lc,同时lb的元素往前挪一位
			lc -> elem[k++] = lb -> elem[j];
			j--;
		}
	}
	while (i >= 0) { // 如果la表中还有元素,依次赋值给lc
		lc -> elem[k++] = la -> elem[i];
		i--;
	}
	while (j >= 0) { // 如果lb表中还有元素,依次赋值给lc
		lc -> elem[k++] = lb -> elem[j];
		j--;
	}
}

int Check_Sq(SqList *la) { // 判断顺序表是否为递增 
	int flag = 0;
	for (int i = 1; i < la -> length; i++) {
		if(la -> elem[i] < la -> elem[i-1]) flag = 1;
	}
	return flag;
}

int main() {
	SqList la, lb, lc;
    InitList_Sq(&la); // 初始化线性表la 
    InitList_Sq(&lb); // 初始化线性表lb 
	InitList_Sq(&lc); // 初始化线性表lc 
	
	printf("\n创建一个有序表A\n");
    Create_Sq(&la); // 创建线性表la 
    int ans = Check_Sq(&la);
    while (ans == 1) {
    	printf("\n非法顺序输入,该序列为非递增!请重新输入该有序表\n");
		Create_Sq(&la); // 创建线性表la 
		ans = Check_Sq(&la);
	}
    printf("\n创建成功!\n"); 
    	
    printf("\n创建一个有序表B\n");
    Create_Sq(&lb); // 创建线性表lb
	int ans1 = Check_Sq(&lb); 
    while (ans1 == 1) {
    	printf("\n非法顺序输入,该序列为非递增!请重新输入该有序表\n");
		Create_Sq(&lb); // 创建线性表lb
		ans1 = Check_Sq(&lb);
	} 
	printf("\n创建成功!\n"); 
    
    printf("\n顺序表A的数据:\n");
	Print_Sq(la); // 输出线性表la
	printf("\n顺序表B的数据:\n");
	Print_Sq(lb); // 输出线性表lb
	
    Merge_Sq(&la, &lb, &lc); //将la顺序表和lb顺序表合并为一个有序递减的顺序表lc 
    printf("\n顺序表C的数据:\n");
    Print_Sq(lc); // 输出线性表lc 
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言将两个递增的顺序表合并为一个递减的顺序表 的相关文章

  • 阿里笔试_ //如果有人n分钟内,连续发帖M次,将本人封杀掉

    如果有人n分钟内 xff0c 连续发帖M次 xff0c 将本人封杀掉 算法思想 xff1a Arrylist存储点击的记录 HashMap xff08 用户 xff0c 发帖时间 xff0c 次数 xff09 HashSet xff08 封
  • 基于RF的web自动化测试

    前提 xff1a 安装python 配置好自动化测试的框架RobotFrame框架 1 web的自动化测试基于库Selenium2Library 而此库又依赖这4个关联的库 xff1a decorator xff0c selenium ro
  • 接口和抽象类

    收藏的别人的 xff0c 总结的清晰易懂 一 抽象类 1 抽象类 包含一个抽象方法的类就是抽象类 2 抽象方法 声明而未被实现的方法 xff0c 抽象方法必须使用abstract关键词字声明 1 2 3 4 5 6 public abstr
  • jmeter请求ipv6

    ipv6改造 1 在nginx服务器上重新配置nginx conf文件 xff08 配置信息如下 xff09 2 nginx服务上 xff0c ping 查看 ipv6的地址 3 在nginx服务器上能 ping6 xxxx xxx 0 x
  • jmeter 数据库压测

    第一步 xff1a 第二步 xff1a 下图若选择永远 xff0c 1分钟内达到最大并发量40 xff0c 立即循环执行 xff0c 持续执行5min 第三步 xff1a 第四步 xff1a 这里的Mysql需要和下图中的一致 测试结果 x
  • 压测服务器的搭建及测试执行

    一个项目可能存在多个环境 开发的调试环境 xff0c 测试人员的测试环境 xff0c 专门压测的压测环境 一般测试环境和压测环境由测试人员维护 xff0c 因为考虑压力测试设计到高并发 xff0c 高性能 xff0c 在不知代码质量的情况下
  • c语言学生宿舍管理系统( 文件(二进制文本存储),链表版)

    实现简单的学生宿舍基本信息管理 xff0c 宿舍的基本信息包括楼号 房间号 面积 所容纳人数 已入住人数等 xff0c 系统以文本菜单形式工作 登录时 xff1a 用户名为asd 密码任意 include lt stdio h gt inc
  • mock工程的编写和应用

    mock方法体的编写 xff1a 首先明确自己要mock的方法 xff0c 需要传入的参数和需要返回的参数 xff0c 然后明确路径 xff0c 一 xff1a 如下图解 xff0c 我们需要mock一个 传入json对象和传出json对象
  • Linux使用hdparm检测硬盘信息

    一 安装hdparm centos sudo yum install hdparm ubuntu 银河麒麟 sudo apt get install hdparm 二 使用 查看硬盘的读取速度及缓存速度速度 hdparm tT dev sd
  • linux系统导入CA证书

    英文版出处 xff1a http majic rs blog system wide installation of certificates 因为众所周知的原因 xff0c 同步android源码成了非常痛苦的事情 迫不得已采用了goag
  • C语言中无符号数和有符号数的左移和右移

    在单片机开发中 xff0c 通常会使用左移和右移操作做快速的乘法和除法运算 例如 xff0c 将0x0001左移1位 xff0c 相当于乘以2 1左移2位相当于乘以2 2 xff0c 以此类推 xff0c 左移n位 xff0c 相当于乘以2
  • UIButton-UIControlEvents(事件)

    UIControlEvents UIControlEventTouchDown span class token comment 单点触摸按下事件 xff1a 用户点触屏幕 xff0c 或者又有新手指落下的时候 span UIControl
  • Debian普通用户获取root权限|sudo的安装与配置

    Debian系统的普通用户需要安装软件时 xff0c 往往会收到 Permission denied 的提示 xff0c 这时候需要root权限 那么如何在不登陆超级管理员账户的前提下拥有root权限呢 xff1f 对于大多数Linux系统
  • 电脑桌面文件不见了怎么恢复?

    众所周知 xff0c 我们都会在电脑桌面上放置各种文件 文件夹等 xff0c 这样很容易造成文件堆积过多 xff0c 桌面杂乱无章 xff0c 影响查找文件速度 这不可避免的要对电脑桌面进行整理 xff0c 但有时候我们会出现重要文件突然就
  • CCF之“毫无头绪”

    1 CCF之任务调度 xff1a 试题编号 xff1a 201403 5 试题名称 xff1a 任务调度 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 xff1a 问题描述 有若干个任务需要在一台机器上运行
  • Matika版OpenStack伪生产环境部署-keystone

    身份服务概述 OpenStack认证管理服务提供一个单点集成身份验证 授权和服务目录服务 其他OpenStack服务使用认证服务作为一个通用统一的API 此外 服务提供用户的信息 但不包括在OpenStack 如LDAP服务 可以集成到一个
  • 异步套接字基础:select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET使用说明

    select函数 xff1a 系统提供select函数来实现多路复用输入 输出模型 原型 xff1a include lt sys time h gt include lt unistd h gt select函数 xff1a 系统提供se
  • 7-53 两个有序序列的中位数 (25 分)

    已知有两个等长的非降序序列S1 S2 设计函数求S1与S2并集的中位数 有序序列A 0 A 1 AN 1的中位数A N 1 2的值 即第 N 43 1 2 个数 xff08 A 0为第1个数 xff09 输入格式 输入分三行 第一行给出序列
  • PROC系列之---/proc/stat/

    包含了所有CPU活动的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 work 64 builder cat proc stat cpu 432661 13295 86656 422145968 171474 233 5

随机推荐

  • PROC系列之---/proc/pid/stat

    proc stat 包含了所有CPU活跃的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 root 64 localhost cat proc 6873 stat 6873 a out R 6723 6873 6723
  • PROC系列之---/proc/pid/statm

    proc statm 包含了所有CPU活跃的信息 xff0c 该文件中的所有值都是从系统启动开始累计到当前时刻 root 64 localhost cat proc self statm 654 57 44 0 0 334 0 输出解释 C
  • Linux下使用socket传输文件的C语言简单实现

    简单的C语言实现 xff0c 客户端通过TCP协议向服务器端请求传输的文件 xff0c 服务器端收到请求后向客户端发送文件 服务器程序和客户端程序应当分别运行在两台计算机上 在运行服务器端的计算机终端执行 xff1a file server
  • 设置linux进程优先级和CPU亲和性(转载)

    进程cpu资源分配就是指进程的优先权 xff08 priority xff09 优先权高的进程有优先执行权利 配置进程优先权对多任务环境的linux很有用 xff0c 可以改善系统性能 还可以把进程运行到指定的CPU上 xff0c 这样一来
  • 20130718:Linux内核编译

    最近在学习 操作系统概念 一书 xff0c 有些实验需要在系统内核中增加一些新的系统调用 xff0c 由此便产生了修改内核源码并重新编译生成新内核的需求 我的思路是 首先搞定内核编译的流程 xff0c 确保有个可用的实验环境 xff0c 在
  • Linux Bash Shell 学习笔记

    1 bash脚本的参数处理 BASH的参数可以用 加数字编号来访问 xff0c 其中 xff1a 代表脚本的参数个数 1代表脚本的第1个参数 2代表脚本的第2个参数 以此类推 xff0c n代表脚本的第n个参数 xff0c 但是 xff0c
  • L1-python中的特殊方法__str__

    1 使用场景 在Python的类的定义中 xff0c init 方法用来初始化实例属性 当创建类对象并打印输出时 xff0c 默认输出结果会是一串地址符 xff0c 如 xff1a lt main Student object at 0x0
  • L3-python语言中的几种特征操作

    汇总了目前碰到的几个Python有别于其它程序语言特征 xff0c 体现了Python语言自有的简洁与优雅 xff0c 可参考如下使用与注意事项 列表推导式 一行代码直接对列表元素进行翻倍操作 xff0c 比for的遍历 xff0c 简洁
  • 7-13 统计工龄 (20 分)

    给定公司N名员工的工龄 xff0c 要求按工龄增序输出每个工龄段有多少员工 输入格式 输入首先给出正整数N xff08 10 5 xff09 xff0c 即员工总人数 xff1b 随后给出N个整数 xff0c 即每个员工的工龄 xff0c
  • L4-深度分析Python数据库(SQLServer)访问中的连接

    1 环境准备 首先就是要安装包 xff0c 直接使用pip命令安装即可 pip install pymssql 2 Python pymssql库的数据库访问分析 参考下图 xff0c 描述了数据库连接在单次访问中的创建与关闭 值得注意的是
  • L5-利用Python生成器巧解算法小题

    介绍两个利用Python生成器替代传统的循环遍历操作来解决问题的例子 经过思考与实践 xff0c 充分利用这种自有特征 xff0c 理解实现的细节 xff0c 感受这种编程方式的优雅 1 字符替换 将 aeiou 进行替换 xff0c 规则
  • L6-Numpy中的随机函数

    文章目录 1 rand 2 randn 3 randint 4 random 5 choice 6 随机种子seed 本文汇总了Numpy中常见的取随机数的函数 xff0c 介绍了基本用法 1 rand 指定的输出的二维数组的型 xff0c
  • L7-Python字符串格式化小结

    文章目录 一 百分号 1 直接使用2 表达式赋值3 绑定变量名4 格式符汇总说明5 更精细化的控制 二 format控制基本语法1 绑定变量名2 绑定对象属性3 通过下标取元素来赋值4 填充与对齐5 精度与类型6 千位分隔符 本篇汇总了Py
  • L8-Flatten拍平多维数组的元素

    文章目录 案例说明1 最平凡 xff1a 数组索引访问2 最伤脑 xff1a 二次遍历 列表生成器3 最灵巧 xff1a 活用函数sum 为什么sum 还可以这样玩 xff1f 4 最省心 xff1a 一步到位 xff0c Numpy fl
  • L9-Python内部变量的作用域问题

    文章目录 写在开头一 连续等式判断二 函数内部变量作用域的变更1 对外部变量不进行运算 xff0c 直接访问2 直接对外部变量进行操作运算3 新增global声明 xff0c 再操作 写在开头 分享 记录两个有意思的案例 xff0c 平时碰
  • L10-简谈正则表达式中几个函数的使用

    文章目录 概述1 match 2 search 3 sub 4 compile 5 findall 6 finditer 7 split 8 subn 9 groups 10 贪婪模式与惰性模式注意事项 概述 正则表达式本身是一种小型的 高
  • L11-Python中的高阶函数的使用

    Python中的函数是一个对象 xff0c 既可以作为输入参数 xff0c 也可以作为返回结果 在这里聊聊几个常用的高阶函数 xff0c 来看看函数是如何被作为输入参数 返回结果来使用的 1 map 映射函数 语法 xff1a map fu
  • L12-聊聊Python的装饰器

    文章目录 1 基本介绍2 理解函数2 1 函数也是对象2 2 嵌套函数2 3 返回结果为函数2 4 函数作为输入参数 3 创建装饰器4 带参数的装饰器5 装饰器的应用 监控日志 1 基本介绍 定义 在函数调用前后自动打印日志 xff0c 称
  • L13-理解Python中的特殊的返回值-函数

    文章目录 说明1 初识返回值 函数2 辨识函数对象3 闭包的注意事项谨记如何避免 xff1f 说明 在Python中 xff0c 一切函数即对象 函数同时也可视作变量 xff0c 作为一个返回值 下面通过实际案例来说明下 xff0c 当函数
  • c语言将两个递增的顺序表合并为一个递减的顺序表

    eg xff1a 顺序表A xff1a 1 3 5 7 顺序表B xff1a 2 4 6 8 合并后的表C xff1a 8 7 6 5 4 3 2 1 思路 xff1a 从后往前遍历顺序表A和B xff0c 如果当前A表的数大于等于B表的数