openjudge数据结构练习集 1:集合的交运算(单链表)

【数据结构】集合及运算 集合的表示 集合运算:交、并、补、差,判定一个元素是否属于某一集合 并查集:集合并、查某元素属于什么集合 并查集问题中集合存储如何实现? 可以用树结构表示集合,树的每个结点代表一个集合元素 采用数组存储形式 集合运算 (1)查找某个元素所在的集合(用根结点表示) int Find( SetType S[ ], ElementType X ) { /* 在数组S中查找值为X的元素所属的... 阅读详情

集合的交运算(单链表)

总时间限制: 
1000ms
内存限制: 
65536kb
描述

利用两个单链表LA和LB分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),要求一个新的集合A=A

∩B。这就要求对链表作如下操作:将存在于表LA中,同时又存在于LB中的数据元素保留,将LA中其他元素删除。

例如:输入8个整数:3 6 7 12 14 8 9 2,建立链表LA;再输入10个整数:8 9 5 21 22 18 29 25 80 12,建立链表LB;则做集合的交运算后,LA变为:12 8 9

   要求:必须使用链表,程序中必须有链表的相关操作:初始化、插入、删除、输出链表中元素、销毁。不满足要求的程序即使通过,也会算作0分。



输入
输入包含3行:
第一行是两个整数n和m(1 <= n,m <= 200),用空格分隔,分别代表集合A和B的元素个数。
第二行包含n个整数。每个整数之间用空格分隔;每个整数的取值在32位有符号整数范围以内。代表集合A的元素。
第三行包含m个整数。每个整数之间用空格分隔;每个整数的取值在32位有符号整数范围以内。代表集合B的元素。
输出
输出只有1行:
按输入时的顺序输出交集中元素的值,每元素之间用空格分隔。
样例输入
8 103 6 7 12 14 8 9 28 9 5 21 22 14 29 25 80 12
样例输出
9 8 12

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

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20

typedef int Status;
typedef int ElemType;

typedef struct Node
{
    ElemType data;
    struct Node *next;
} Node;

typedef struct Node *LinkList;

Status InitList(LinkList *L);//初始化链表

Status ListInsert(LinkList *L,int i,ElemType e);//往链表中第i个位置插入数据

Status ListDelete(LinkList *L,int i);//把链表中第i个位置的数据删除

Status visit(ElemType c)
{
    printf("%d ",c);
    return OK;
}

int LocateElem(LinkList L,ElemType e)
{
    int i=0;
    LinkList p=L->next;
    while(p)
    {
        i++;
        if(p->data==e) /*  找到这样的数据元素 */
        return i;
        p=p->next;
    }
    return 0;
}

int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    LinkList la,lb,lc;//定义链表la,lb,lc
    InitList(&la);//初始化链表
    InitList(&lb);
    InitList(&lc);
    for(int i=1;i<=n;i++)//往链表中插入数据
    {
        int x;
        scanf("%d",&x);
        ListInsert(&la,i,x);
    }
    for(int i=1;i<=m;i++)
    {
        int x;
        scanf("%d",&x);
        ListInsert(&lb,i,x);
    }
    LinkList p=la->next;
    LinkList q=lb->next;
    while(p)
    {
        int x=0;
        q=lb->next;
        while(q)
        {

            if(p->data==q->data)
            {
                x=1;
                ListInsert(&lc,1,p->data);
            }
            q=q->next;
        }
        p=p->next;
    }
    LinkList pp = lc->next;
    while(pp)
    {
        printf("%d ",pp->data);
        pp=pp->next;
    }
    return 0;
}

Status InitList(LinkList *L)
{
    *L=(LinkList)malloc(sizeof(Node));
    if(!(*L))
        return ERROR;
    (*L)->next=NULL;

    return OK;
}

Status ListInsert(LinkList *L,int i,ElemType e)
{
    int j;
    LinkList p,s;
    p = *L;
    j = 1;
    while(p && j < i)
    {
        p = p->next;
        ++j;
    }
    if( !p || j > i)
        return ERROR;
    s = (LinkList)malloc(sizeof(Node));
    s->data = e;
    s->next = p->next;
    p->next = s;
    return OK;
}

Status ListDelete(LinkList *L,int i)
{
    int j;
    LinkList p,q;
    p = *L;
    j = 1;
    while(p->next && j < i)
    {
        p = p->next;
        ++j;
    }
    if(!(p->next) || j > i)
        return ERROR;
    q = p->next;
    p->next=q->next;
    free(q);
    return OK;
}

读取带空格字符串时候可以用while((c=getchar())!='\n') 2800:垂直直方图 2800:垂直直方图 View Submit Statistics Clarify Time Limit: 1000ms Memory Limit: 65536kB Description 输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。 Input 输入包括4 阅读详情

相关推荐

数据结构-有序集合的交运算

数据结构-有序集合的交运算

咕呱咕呱咕的博客 765

openjudge数据结构练习集 数制转换(栈应用)

数制转换(栈应用)总时间限制: 1000ms内存限制: 65536kB描述编程实现:输入两个正整数m和r(2&lt;= r &lt;=16),输出与十进制数m相等的r进制数。大于9的数字依次使用大写字母:A B C D E F要求:使用链栈来实现,否则成绩记0分。输入输入一行,包括两个整数m和r,用空格隔开。1&lt;=m&lt;=9999, 2&lt;=r&lt;=16输出与十进制整数m相等的r...

beforeevery的博客 590

【数据结构】集合的并、交和差运算

数据结构的集合的并、交和差运算。 数据结构的集合的并、交和差运算。

链表的操作

链表的操作包括利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这 些操作(插入、删除、查找、计数、输出单独写成函数的形式。今天对链表的实现进行了代码的总结。 代码如下: #include #include typedef struct Node //节点的构造 { int data; struct Node *PNext;

cyd_csdn的博客 1420

数据结构实现的集合交并差运算

数据结构实习的作品,可以运行的~用相应函数实现集合的交并差运算,以单链表的形式实现,可行性良好

数据结构--课程设计(多种排序算法 有界面)

数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面

openjudge数据结构练习集 队列基本操作

队列基本操作查看提交统计提问总时间限制: 1000ms单个测试点时间限制: 500ms内存限制: 5000kB描述输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:1、[10,99]之间的整数:将该整数入队。2、-1: 队首整数出队。3、-2: 显示队列所有整数。4、-3: 输入结束。说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。输入第一行若干...

beforeevery的博客 912

TMS320F28377D/F28379D CAN通信避坑指南:从寄存器配置到中断处理的完整流程

本文详细解析了TMS320F28377D/F28379D在CAN通信开发中的关键技术与避坑指南,涵盖时钟配置、寄存器初始化、中断处理等完整流程。针对工业控制和汽车电子应用,提供了实用的优化技巧和错误诊断方法,帮助开发者高效实现稳定可靠的CAN通信。

weixin_30954265的博客 492

【OpenJudge】【数据结构】全题解

Challenge0 : 直接数组模拟即可。 Challenge1 : 比上一题加强了一点,对每个位置建立链表,修改时向该位置插入新节点并保存时间戳,查询时沿着链表找到第一个时间戳小于k的数字 Challenge2:比上一题更难了,可以撤销前x次操作。我们可以使用可持久化的思想,每次操作都新建节点,用倍增思想维护当前节点的祖先,这样查询就可以做到O(logn) Challenge3 : 裸线

I'm dreamer 1500

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

m0_58098052的博客 1592

activemq_CVE-2015-5254_漏洞复现_源码分析

ActiveMQ-CVE-2015-5254

qq_51550750的博客 940

【openjudge 计算概论(A)】[结构体与链表练习]

#include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct ch{ string name; int yue...

weixin_30511107的博客 135

操作系统课程项目 OS project —— Pintos from Project 1 to Project 3

Pintos Project 陪伴我们操作系统课程大半个学期了…… 虽然做了这么长时间,个人能力有限,pintos代码,看过的可能也就看懂了一半吧,更不用说没看过的了…… 但是也找到了一些有价值的资料,整理一下,供后辈们参考…… 关于环境的问题,最好是用ubuntu 16.04 windows用户不要折腾装双系统了,特别是win10,动不动更新一下,说不定双系统就出问题了,linux...

Deserted Land 8553

算法基础5 —— 线性表(链表的建立、输出、查找、插入、删除等操作)

线性表 定义:线性表是最基本的一种数据结构,是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中除了首元素和尾元素之外,每一个元素都有唯一的前驱和唯一的后续 线性表包括顺序表和链表,其中,可以将顺序表理解为数组 链表:链表由各结点组成,每个结点至少包括数据域和指针域。 在上图中的链表里,head 为头结点(一般不存放数据),5所在结点为尾结点且其指针域为NULL 物理与逻辑 物理上连续指的是数据元素在计算机内存中的地址是连续的 逻辑上连续指的是人们想象中的元素相邻 链表

smallrain6的博客 5330

Unreal Engine鸿蒙移植实战:环境配置、构建流程与性能优化指南

游戏引擎移植是跨平台开发中的关键技术环节,其核心原理在于通过适配目标操作系统的底层接口和工具链,实现同一套代码在不同硬件和软件环境下的高效运行。这项技术的价值在于最大化代码复用率,降低多平台维护成本,并能让应用快速触达新兴生态系统的用户。在移动游戏和XR应用领域,随着鸿蒙HarmonyOS生态的快速发展,将成熟的商业引擎如Unreal Engine迁移至此平台,成为开发者探索新市场机会的重要路径。本文聚焦于Unreal Engine项目向鸿蒙系统的移植实践,详细解析了从环境搭建、源码适配到构建打包的全链路流

weixin_29011395的博客 405

LPC546xx USB接口VBUS阈值设计:从原理到实践,解决冷启动与可靠性问题

在嵌入式USB接口设计中,VBUS信号不仅是电源线,更是设备连接检测与电源管理的核心。其电压阈值直接决定了USB物理层(PHY)能否正确识别主机并建立有效会话。理解VBUS的会话有效电压(Votg_sess_valid)与PHY有效电压(VBUS_valid)等关键参数,是确保接口稳定性的基础。这些参数影响着设备枚举的成功率、通信稳定性以及长期可靠性。在工程实践中,尤其是对于集成PHY的微控制器如NPC LPC546xx系列,VBUS的连接方案(直接连接或通过稳压器)需要根据设备供电模式(自供电/总线供电)

weixin_30915275的博客 400

openjudge数据结构练习集 反向输出整数序列

反向输出整数序列查看提交统计提问总时间限制: 500000ms内存限制: 65535000kB描述输入一个整数序列(非负整数,只含 正整数 和 0 )。序列以-1 结束。要求反向输出这个正整数序列。输入一个整数序列,每个数之间以空格隔开,非负整数,只含 正整数 和 0 。-1 表示输入结束。输出反向输出输入文件中的整数序列。样例输入3 127 64 1991 -1样例输出1991 64 127 #...

beforeevery的博客 3818

MATLAB代码转到FPGA代码

添加完文件之后,需要设置输入的数据类型,设置完之后点击Workflow Advisor。MATLAB文件包含一个功能实现文件和测试文件。对应FPGA中的功能文件和测试文件。然后,将功能文件和测试文件添加到相应位置。然后选择APP中的HDL Coder代码。首先需要编写好MATLAB文件。点击链接,就可以查看你看到的代码。可以自己生成代码的语言类型。

小柚子的博客 3062

用有序单链表表示集合,实现集合的交、并、差运算 基本要求: 空间复杂度为 O(1)

二、课程设计内容及要求 集合的交、并和差运算的实现 问题描述:用有序单链表表示集合,实现集合的交、并、差运算 基本要求: 空间复杂度为 O(1) 系统功能模块 4.1输出和销毁函数设计 void DispList(LinkList*L) { LinkList *p=L->next; while(p!=NULL) { cout<<"%c “,p->data; p=p->next; } cout<<”\n"; } void DestroyList(LinkL

weixin_45863084的博客 5582

CANOE-介绍 @014-基于CAPL的Someip测试(CANOE 15.0/16.0/17.0)【草稿】发送事件、方法

摘要:本文介绍了使用CANoe 16.0及更高版本配置SOME/IP测试环境的方法,包括硬件连接、工程配置和CAPL代码实现。SOME/IP是一种面向服务的车载通信协议,支持服务发现、事件推送和方法调用。文章详细说明了网络拓扑配置、数据库文件加载等步骤,并提供了CAPL代码示例,展示如何初始化多个应用端点(15个不同端口)和服务实例(73个服务),通过SomeIpOpenLocalApplicationEndpoint和SomeIpCreateProvidedServiceInstance函数实现。配置过程

沿流不止 424

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

c语言数据结构linklist用法,C语言数据结构-线性链表LinkList

1. 头结点表示链表中第一个结点的存储位置2. 最后一个结点的存储位置为空(NULL);#ifndef __LINKLLIST_H__#define __LINKLLIST_H__#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLF -1#define OVERFLOW -2#define LIST_I...

weixin_36337502的博客 5536

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据结构链表的头插法建立、删除、计数、查找、输出

#define _CRT_SECURE_NO_WARNINGS #include "LIST.h" #include <stdio.h> #include <stdlib.h> void InitLinkLinst(List *L) { *L = NULL; } void PushFront(List* L, int d)//头插 { Node* cur = *L...

qq_44783220的博客 642

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构之利用单链表实现集合的交并运算

/* *Copyright© 中国地质大学(武汉) 信息工程学院 *All right reserved. * *文件名称:linkedList.h *摘 要:利用单链表实现集合的交并运算 * *当前版本:1.0 *作 者:邵玉胜 *完成日期:2018-12-27 */ #ifndef LINKLIST_H_ #define LINKLIST_H_ #include&lt;...

数据结构学习心得 3142

C语言课程设计——链表

//每个节点的前n-1个数据在数据域,最后一个数据在地址域 //每个链表必须有头指针,为指向结构体类型的指针 //数组与链表存储数据的区别: //1、数组中的元素占用连续存储存储空间,链表不一定占用连续 //2、数组中数据元素访问随机,链表访问是顺序 //3、链表中插入和删除元素比数组操作效率高 // 建立链表:1、头插法(查到最前) 2、尾插法(插到最后) //尾插法: //1、malloc建...

H4ppyD0g的博客 802

单链表的交并差(c 语言 数据结构)

        因为准备考研,在学校学了两个星期数学,回家休息顺便写了这个程序,题目是有位朋友在blogs里留言出的:       编写一个程序,采用单链表表示集合(集合中不存在重复的元素),利用例2.4的算法将其按递增方式排序,构成有序的单链表。求这样的两个集合的并、交和差。       我也不知道例2.4的算法是什么,但我的这段程序实现了交并差的功能,而且结果也保持排序。        还有,...

weixin_33777877的博客 491
上一篇: 蓝桥杯oj 算法训练 大小写转换
下一篇: openjudge数据结构练习集 单链表的创建,遍历与销毁
beforeevery
博客等级 码龄9年 9粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值