941: 有序顺序表的合并操作的实现

学习版

【c语言】

1.顺序表元素类型

2.顺序表的初始化

3.顺序表的插入

4.顺序表的合并

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>

typedef struct {
    int* data; // 数据数组的指针
    int length; // 当前顺序表中的元素个数
    int capacity; // 顺序表的总容量
} SeqList;

// 初始化顺序表
void init(SeqList* list, int size) {
    list->data = (int*)malloc(size * sizeof(int));
    list->length = 0;
    list->capacity = size;
}

// 插入元素到顺序表中
void insert(SeqList* list, int value) {
    if (list->length >= list->capacity) {
        std::cout << "顺序表已满,无法插入元素" << std::endl;
        return;
    }
    list->data[list->length++] = value;
}

// 打印顺序表
void print(SeqList* list) {
    for (int i = 0; i < list->length; i++) {
        std::cout << list->data[i] << " ";
    }
}

// 释放顺序表的内存
void destroy(SeqList* list) {
    free(list->data);
    list->length = 0;
    list->capacity = 0;
    list->data = NULL;
}

// 合并两个顺序表
SeqList mergeSeqList(SeqList* list1, SeqList* list2) {
    SeqList mergeList;
    mergeList.capacity = list1->capacity + list2->capacity;
    mergeList.data = (int*)malloc(mergeList.capacity * sizeof(int));
    int i;
    for (i = 0; i < list1->length; i++) {
        mergeList.data[i] = list1->data[i];
    }
    int j;
    for (j = 0; j < list2->length; j++) {
        mergeList.data[i + j] = list2->data[j];
    }
    mergeList.length = i + j;
    return mergeList;
}

int main() {
    SeqList list1, list2;
    int n;
    std::cin >> n;
    init(&list1, n);
    int a;
    while (n--) {
        std::cin >> a;
        insert(&list1, a);
    }
    int m;
    std::cin >> m;
    init(&list2, m);
    while (m--) {
        std::cin >> a;
        insert(&list2, a);
    }
    SeqList list3 = mergeSeqList(&list1, &list2);
    destroy(&list1);
    destroy(&list2);

    std::sort(list3.data, list3.data + list3.length, [](int a, int b) {
        return a < b;
        });

    print(&list3);
    destroy(&list3);
}

【C++】

【速通版】

#include <iostream>
#include <vector>
#include <algorithm>
int main() {
	int n, m, a;
	std::cin >> n;
	std::vector<int> vec;
	while (n--) {
		std::cin >> a;
		vec.push_back(a);
	}
	std::cin >> m;
	while (m--) {
		std::cin >> a;
		vec.push_back(a);
	}
	std::sort(vec.begin(), vec.end());
	for (int num : vec) {
		std::cout << num << " ";
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见代码漏洞介绍

目录 1.XSS攻击 1.1 存储型 XSS&#xff08;Stored XSS&#xff09; 1.2 反射型 XSS&#xff08;Reflected XSS&#xff09; 1.3 DOM 型 XSS&#xff08;DOM-based XSS&#xff09; 1.4 修复方案 2.日志伪造 2.1 伪造方法 2.2 解决方法 2.3 验证结果 3.ESAPI 第一步…

第10讲:操作符详解

第10讲&#xff1a;操作符详解 1. 操作符的分类2. 二进制和进制转换2.1 二进制转十进制10进制转2进制数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45fb3048f5164084b9d494b3d233bc42.png)2.2 二进制转八进制和十六进制2.2.1 二进制转八进制2.2.2 二进制转十六…

C语言例1-3:设 int a; ,语句 for(a=0;a==0;a++); 和语句 for(a=0;a=0;a++); 执行的循环次数分别是

答案&#xff1a;1,0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("1\n");} return 0; } 结果如下&#xff1a; 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("…

【DA-CLIP】生成图像描述generate_captions.py代码理解+实践

上一篇博文解决了运行环境问题 【DA-CLIP】Windows下使用clip_interrogator/BLIP进行生成图像-文本-退化类型数据集的generate_caption.py代码运行逻辑-CSDN博客https://blog.csdn.net/m0_60350022/article/details/137061820?spm1001.2014.3001.5501 回顾思路 用HQ图生成干…

VAE——生成数字(Pytorch+mnist)

1、简介 VAE&#xff08;变分自编码器&#xff09;同样由编码器和解码器组成&#xff0c;但与AE不同的是&#xff0c;VAE通过引入隐变量并利用概率分布来学习潜在表示。VAE的编码器学习将输入数据映射到潜在空间的概率分布的参数&#xff0c;而不是直接映射到确定性的潜在表示…

git最常用的命令与快捷操作说明

git最常用的命令与快捷操作说明 最常用的git三条命令1、git add .2、git commit -m "推送注释"3、git push origin 远程分支名:本地分支名 其他常用命令本地创建仓库分支删除本地指定分支切换本地分支合并本地分支拉取远程仓库指定分支代码过来合并推送代码到远程分支…

c语言:vs2022写一个一元二次方程(包含虚根)

求一元二次方程 的根&#xff0c;通过键盘输入a、b、c&#xff0c;根据△的值输出对应x1和x2的值(保留一位小数)(用if语句完成)。 //一元二次方程的实现 #include <stdio.h> #include <math.h> #include <stdlib.h> int main() {double a, b, c, delta, x1…

day3 wsl下启动第一个nest项目(java转ts全栈/3R教室)

背景&#xff1a;准备先找个nestjs模板项目&#xff08;kuizou大佬的nest-vben-admin&#xff09;看看大体情况&#xff0c;但发现win下还是问题还真挺多&#xff0c;受不了了今天一定要把wsl环境安装好。。。 比如如下明显就是win环境导致的错误&#xff0c;估计wsl下应该没问…

给大家推荐一个系统运维管理神器jeecat

一个可以当堡垒机又可以当成系统运维管理软件的神器&#xff0c;不仅支持堡垒机的全部功能&#xff0c;还实现以系统为维度的全方位授权管控&#xff0c;有效避免信息泄露、删库跑路等危险操作&#xff0c;作公司的安全运维管控神器。 无须任何插件&#xff0c;只须浏览器的web…

蓝桥杯骗分小技巧

写在前面 由于本人第一次参加的是cpp组&#xff0c;第二次参加的python组&#xff0c;所以一些技巧都是关于cpp和python的 先上圣经 贪心骗样例&#xff0c;暴力出奇迹。 暴搜挂着机&#xff0c;打表出省一。 数学先打表&#xff0c;DP看运气。穷举TLE&#xff0c;打表UKE。 模…

系统需求分析报告(原件获取)

第1章 序言 第2章 引言 2.1 项目概述 2.2 编写目的 2.3 文档约定 2.4 预期读者及阅读建议 第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 …

【Qt】QMainWindow

目录 一、概念 二、菜单栏 2.1 创建菜单栏 2.2 在菜单栏中添加菜单 2.3 创建菜单项 2.4 在菜单项之间添加分割线 三、工具栏 3.1 创建工具栏 3.2 设置停靠位置 3.3 设置浮动属性 3.4 设置移动属性 四、状态栏 4.1 状态栏的创建 4.2 显示实时消息 4.3 显示永久消…

vue3+vite模版框架 tabs右键刷新时丢失路由参数

问题&#xff1a; 标题栏的tabs的右键&#xff1a;刷新时&#xff0c;没有保存上一个页面传递过来的参数 分析&#xff1a; TagView.vue刷新事件 function refreshSelectedTag(view: TagView) {console.log(|--执行刷新, view)tagsViewStore.delCachedView(view);const {full…

Cookie/Session

1.Cookie HTTP 协议自身是属于 "无状态" 协议. "无状态" 的含义指的是: 默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系. 但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的. 例如登陆网站成功后, 第二…

004 高并发内存池_ThreadCache设计

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;高并发内存池 &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言文章重点一、设计FreeList自由链表结构二、定制对齐映射规则三、完成申请Allocate与释放Deallocate…

数据结构:链表的双指针技巧

文章目录 一、链表相交问题二、单链表判环问题三、回文链表四、重排链表结点 初学双指针的同学&#xff0c;请先弄懂删除链表的倒数第 N 个结点。 并且在学习这一节时&#xff0c;不要将思维固化&#xff0c;认为只能这样做&#xff0c;这里的做法只是技巧。 一、链表相交问题 …

【免费获取】【下片神器】IDM非主流网站视频免费下载神器IDM+m3u8并解决idm下载失败问题 idm下载器超长免费试用

当你浏览一个网站&#xff0c;看到一个喜欢的视频&#xff0c;不知道如何下载的时候&#xff0c;本教程或许可以帮你点小忙。大部分的主流网站都有专门的下载工具&#xff0c;本篇教程主要针对的是一些非主流的小网站。 我们的下载方法就是利用IDM&#xff08;Internet Downlo…

npm卸载不掉的解决方案

不管怎么重装重启都报错 真服了&#xff0c;npm卸载不掉绝对是有缓存存在&#xff0c;用where npm查到d盘 实际上根本不在这个地方&#xff0c;这个是我安装的6.14.12版本的npm的地方&#xff0c;我说我怎么怎么重装怎么导包都不行呢&#xff0c;偷偷隐藏在这个目录里面&#…

Unity 学习日记 13.地形系统

下载源码 UnityPackage 1.地形对象Terrain 目录 1.地形对象Terrain 2.设置地形纹理 3.拔高地形地貌 4. 绘制树和草 5.为地形加入水 6.加入角色并跑步 7.加入水声 右键创建3D地形&#xff1a; 依次对应下面的按钮 || 2.设置地形纹理 下载资源包 下载资源包后&#x…

【Ubuntu】文件和目录的增、删、改、查操作

这里写目录标题 (一)文件和目录类命令的使用1、目录与文件的增加&#xff08;1&#xff09;目录的增加 :&#xff08;2&#xff09;文件的增加 2、目录与文件的删除&#xff08;1&#xff09;目录和文件的删除 3、目录与文件的修改&#xff08;1&#xff09;mv命令 4、目录与文…