链表Set_LinkList(并集)

ops/2024/10/10 22:29:26/

并集是把两个集合合并,去除重复元素后组成的集合。

通过键盘输入将两个集合保存在链表A和链表B中,再创建一个链表C用于保存集合A、B的并集,将链表C打印输出。

image.png


提示:

1.相对于上一题(链表Set_LinkList(建立)),本题只需遍历已保存的链表A、B,将遍历到的当前值插入到链表C中;

2.为遍历取出链表数据,需要编写取值函数GetElem(LinkList L, int i),该函数功能为按序号返回数据元素,注意序号从1开始;

3.遍历链表需要知道链表长度,请自行编写ListLength()函数。

4.用户从键盘输入集合A、B,输入数据为整数,输入以-1结束。

输入格式:

第一行输入集合A,第二行输入集合B。

输出格式:

输出集合A、B的并集C

输入样例:

在这里给出一组输入。例如:

9 4 0 7 3 6 5 -1
1 5 6 8 4 7 0 -1

输出样例:

在这里给出相应的输出。例如:

9 4 0 7 3 6 5 1 8

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

 

#include <bits/stdc++.h>
using namespace std;
typedef int ElemType;
struct node{ElemType Data;struct node* next;
};
typedef struct node* Set_LinkList;
Set_LinkList init(){Set_LinkList L = (Set_LinkList)malloc(sizeof(struct node));L->Data = -1;L->next = NULL;return L;
}
int ListLength(Set_LinkList L){int counts = 0;Set_LinkList p = L->next;while(p != NULL){counts++;p = p->next;}return counts;
}
ElemType GetElem(Set_LinkList L, int i){int counts = 0;Set_LinkList p = L->next;while(p != NULL){counts++;if(counts == i){return p->Data;}p = p->next;}return -1;
}
void CreatList(Set_LinkList L, ElemType x){Set_LinkList p = L->next;if(p == NULL){Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));newnode->Data = x;newnode->next = NULL;L->next = newnode;return;}while(p->next != NULL){p = p->next;}Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));newnode->Data = x;newnode->next = NULL;p->next = newnode;return;
}
void display(Set_LinkList L){Set_LinkList p = L->next;if(p == NULL){cout<<"NULL";return;}while(p->next != NULL){cout<<p->Data<<' ';p = p->next;}cout<<p->Data;
}
void insert(Set_LinkList L, ElemType e){Set_LinkList p = L->next;if(p == NULL){Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));L->next = newnode;newnode->Data = e;newnode->next = NULL;return;}while(p->next != NULL){if(p->Data == e){return;}p = p->next;}if(p->Data == e){return;}Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));p->next = newnode;newnode->Data = e;newnode->next = NULL;return;
}
int main(){int x;Set_LinkList A = init();Set_LinkList B = init();cin>>x;while(x != -1){CreatList(A , x);cin>>x;}cin>>x;while(x != -1){CreatList(B , x);cin>>x;}int longA = ListLength(A);int longB = ListLength(B);Set_LinkList C = init();for(int i = 1;i <= longA;i++){insert(C,GetElem(A,i));}for(int i = 1;i <= longB;i++){insert(C,GetElem(B,i));}display(C);return 0;
}


http://www.ppmy.cn/ops/123677.html

相关文章

Vue3 ECharts看板

获取 ECharts - 入门篇 - 使用手册 - Apache ECharts npm install echarts <template><div id"main" style"height:400px;"></div> </template><script lang"ts" setup> import { ref, onMounted } from "…

pytest框架之fixture测试夹具详解

前言 大家下午好呀&#xff0c;今天呢来和大家唠唠pytest中的fixtures夹具的详解&#xff0c;废话就不多说了咱们直接进入主题哈。 一、fixture的优势 ​ pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown&#xff0c;但相对之下它的功能更加强大和灵活。 …

计算机网络:物理层 —— 物理层下的传输媒体

文章目录 传输媒体导向性媒体同轴电缆双绞线光纤光纤分类中心波长光纤规格光纤的优缺点 非导向性媒体ISM 频段无线电波微波激光红外线可见光 传输媒体 传输媒体是计算机网络设备之间的物理通路&#xff0c;也称为传输介质或传输媒介&#xff0c;并不包含在计算机网络体系结构中…

hdfs伪分布式集群搭建

1 准备 vmware 虚拟三台centos系统的节点三台机器安装好jdk环境关闭防火墙&#xff08;端口太多&#xff0c;需要的自行去开关端口&#xff09;hadoop压缩包解压至三台服务器 可在一台节点上配置完成后克隆为三台节点 2 host修改 vi /etc/hosts在每个节点上添加三台机器的i…

IPD是什么?IPD开发流程有哪些阶段?

在当今竞争激烈的市场环境中&#xff0c;产品开发的速度和质量成为企业获取竞争优势的关键因素。IPD&#xff08;Integrated Product Development&#xff09;&#xff0c;即集成产品开发&#xff0c;作为一种先进的产品研发管理方法&#xff0c;被广泛认为是提升产品开发效率和…

Apache POI 2024/10/2

导入Apache POI的maven坐标 通过POI向Excel文件写入文件内容 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File; import java.…

Vue/组件的生命周期

这篇文章借鉴了coderwhy大佬的Vue生命周期 在Vue实例化或者创建组件的过程中 内部涉及到一系列复杂的阶段 每一个阶段的前后时机都可能对应一个钩子函数 以下是我根据coderwhy大佬文章对于每一个阶段的一些看法 1.过程一 首先实例化Vue或者组件 在实例化之前 会对应一个钩子函…

什么是唯一性约束(UNIQUE Constraint)?

唯一性约束是数据库表设计中的一种完整性约束&#xff0c;用于确保列或一组列中的所有值都是唯一的。 这意味着在一个给定的列或列组内&#xff0c;不能有两个行拥有相同的值。 唯一性约束通常用来维护数据的完整性&#xff0c;并防止重复记录。 在关系型数据库管理系统&…