有序集合的交集_有序集合的交集操作_王小幺y的博客-程序员宅基地

技术标签: c语言  数据结构  

题目:
在这里插入图片描述
代码如下:

#include <stdio.h>
#include <stdlib.h>

#define ERROR 0
#define OK 1

typedef struct Vector
{
    
	int size, length;
	int *data;
}Vector;

void init(Vector *vector,int size) {
    
	vector->size = size;
	vector->length = 0;
	vector->data = (int *)malloc(sizeof(int) * size);
}

void expand(Vector *vector) {
    
	int *old_data = vector->data;
	vector->size = vector->size * 2;
	vector->data = (int *)malloc(sizeof(int) * vector->size);
	for (int i = 0; i < vector->length; i++)
	{
    
		vector->data[i] = old_data[i];
	}
	free(old_data);
}

void insert(Vector *vector, int loc, int value) {
    
	if (loc < 0 || loc > vector->length) {
    
		return ERROR;
	}
	if (vector->length >= vector->size) {
    
		expand(vector);
	}
	for (int i = vector->length; i > loc; i++)
	{
    
		vector->data[i] = vector->data[i - 1];
	}
	vector->data[loc] = value;
	vector->length++;
	return OK;
}

void print(Vector *vector) {
    
	for (int i = 0; i < vector->length; i++)
	{
    
		printf("%d", vector->data[i]);
		if (i < vector->length-1) {
    
			printf(" ");
		}
	}
}

void clear(Vector *vector) {
    
	free(vector->data);
	free(vector);
}
void campare(Vector *a, Vector *b, int m) {
    
	int temp[m];
	int count = 0;
	
	for (int i = 0; i < a->length; i++)
	{
    
		for (int j = 0; j < b->length; j++)
		{
    
			if (a->data[i] == b->data[j]) {
    
				temp[count] = j;
                count++;	
			}
		}
	}
    Vector *c = (Vector *)malloc(sizeof(Vector));
	init(c, count);
    for(int i = 0; i < count; i++){
    
        insert(c, i, b->data[temp[i]]);
    }
    printf("%d\n",count);
    print(c);
}

int main() {
    
	Vector *a = (Vector *)malloc(sizeof(Vector));
	int m;
	scanf("%d", &m);
	init(a, m);
	for (int i = 0; i < m; i++)
	{
    
		int val;
		scanf("%d", &val);
		insert(a, i, val);
	}
	Vector *b = (Vector *)malloc(sizeof(Vector));
	int n;
	scanf("%d", &n);
	init(b, n);
	for (int i = 0; i < n; i++)
	{
    
		int val2;
		scanf("%d", &val2);
		insert(b, i, val2);
	}
//	print(a);
//	print(b);
    if(m > n){
    
        campare(a, b, m);
    }else{
    
        campare(a, b, n);
}
	
	clear(a);
	clear(b);
	return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44918232/article/details/115422234

智能推荐

Java里面的GC(垃圾回收机制)_java gc_时间不会赖着不走的博客-程序员宅基地

一、如何确定某个对象是“垃圾”?这一小节先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?通过什么方法判断一个对象可以被回收了。在java中是通过引用来和对象进行关联的也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失一般性,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象_java gc

bootstrap列表加序号_bootstrap-table加载数据序号自增实现-程序员宅基地

初始化表格时,序号自增实现方法:$("#table-list-webhoo").bootstrapTable({......... //省略了相应的参数配置columns : [ { //序号自增实现方法title : '序号',field : 'xh',formatter: function (value, row, index) {return index+1;}},{title : '..._bootstraptable数据渲染生成序号

一个程序员的多年珍藏-程序员宅基地

昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。为了不再重蹈覆辙,我决定把重要的电子书都放到网络硬盘上去备份。索性将这些资料的下载方式公布出来,与大家分享,一定会有你想要的!下载的兄弟注意了,点击下载后,可以在url中看到后缀名:),如果把后缀名改错了就看不了了,所有的资料都有人下载过了,应该都能看。Python相关的资料还可以看:http://jythoner...

JSTL使用及EL运算符的使用_jstl 与运算-程序员宅基地

JSTL使用JSTL标记库由以下标记组成:core:核心标签,流程控制, 处理作用域变量, 变量的显示, 异常的处理, url的处理; formatting:日期, 时间, 数字等的有关i18n的格式化处理; xml:解析xml和通过xsl转换文档格式的处理; sql:SQL数据库操作的处理。比较常用的是core和formatting标签。xml标签用于特定场景的数据显示,sql标_jstl 与运算

优化理论04---- 牛顿法、牛顿法求根、收敛速度、二次收敛性、修正牛顿法-程序员宅基地

感谢各位观看这篇文章,点赞、收藏、你的支持是我前进的动力!感谢你的阅读,专栏文章持续更新!关注不迷路!!无约束优化—牛顿法文章目录无约束优化---牛顿法1牛顿法牛顿法求根2收敛速度3牛顿法的二次收敛性4 Modifified Newton method_二次收敛性

nn.Sequential用法-程序员宅基地

一个连续的容器。模块将按照在构造函数中传递的顺序添加到模块中。或者,也可以传递模块的有序字典。为了更容易理解,这是一个小示例:#使用Sequential的示例model = nn.Sequential( nn.Conv2d(1,20,5), nn.ReLU(), nn.Conv2d(20,64,5), nn.Re..._nn.sequential

随便推点

新标准大学英语综合教程2(第二版)unit1答案截图-程序员宅基地

新标准大学英语综合教程2(第二版)unit1答案截图

JavaWeb_ssm属于javaweb吗-程序员宅基地

基础概念web开发:web:页面的意思,例如:www.baidu.com静态web:html,css提供给所有人看的数据始终不会发生变化的动态web:淘宝,以及几乎所有的网站提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同技术栈:Servlet/JSP,ASP,PHP在Java中,动态web资源开发的技术统称为JavaWebweb应用程序web应用程序:可以提供浏览器访问的程序;a.html、b.html 等多个web_ssm属于javaweb吗

SpringBoot整合cxf发布WebService服务和客户端调用WebService服务_springboot调用c#语言并部署-程序员宅基地

SpringBoot整合cxf发布WebService服务和客户端调用WebService服务参考了 https://blog.csdn.net/wangyuanjun008/article/details/79121687 自己测试过程中有些问题 做个记录SpringBoot(spring整合cxf需添加cxf-rt-frontend-jaxws,cxf-rt-transports-h..._springboot调用c#语言并部署

arcgis10.3shp图层分级显示 发布图层_shp分层-程序员宅基地

首先加载shp数据、重新命名 以此类推点击属性17级视图1:1,2571:18,0561:36,1121:72,2241:288,8951:577,7911:1,155,5831:2,311,166_shp分层

【期末复习】计算机网络 谢希仁版(三)数据链路层-程序员宅基地

数据链路层1. 链路与数据链路结点:主机和路由器链路:从一个结点到相邻结点的一段物理线路,而中间没有其他交换结点。数据链路:当需要在一条线上传送数据时,处理必须有一条物理线路外,还必须有一些表的通信协议来控制在这些数据的传输,把这些二协议的硬件和软件加到链路上,构成数据链路。2. 数据链路层的三个基本问题:封装成帧、透明传输和差错检测封装成帧:把网络层交下来的IP数据包添加首部和尾部封装成帧。透明传输:SOH、EOT一个是开始的控制符号,一个是结束的控制服务。用特殊比特流实现_数据链路层

数据库:mySQLWorkbench添加数据库表格和数据-程序员宅基地

数据库:mySQL Workbench添加数据库、表格和数据上一篇文章主要讲如何从命令行使用命令添加数据库、表格、以及字段名。https://blog.csdn.net/alice_tl/article/details/88930900这一篇文章讲如何通过Mysql的可视化图形工具Workbench来做同样的操作。包含Mysql Workbench的所有基本操作。 ...