【数据结构】c语言实现集合的交并差运算
待改写:存储数据类型int——>char
重复的元素可存储
功能上不完善
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int data;
int flag;
struct Linklist *next;
} Linklist;
//对LA,LB中相同的元素打上标记
Linklist* Link_get_flag(Linklist *LA,Linklist *LB)
{
Linklist *p = LA->next,*q = LB->next;
//此处双重while循环目的是将LA,LB中相同的元素打上标记,便于求他们的交并差集。
while(p != NULL)
{
while(q!=NULL)
{
if(p->data == q->data)
{
p->flag = 1;
q->flag = 1;
q = q->next;
}
else
{
q = q->next;
}
}
q = LB->next;
p = p->next;
}
}
int creatLinklinst(Linklist *L,int i)
{
Linklist *p;
L ->next = NULL;
printf("依次输入元素各个值");
for(;i>0;--i)
{
p = (Linklist*)malloc(sizeof(Linklist));
p->flag = 0;
scanf("%d",&p->data);
p->next = L->next;
L->next = p;
}
return 1;
}
/*
* 交集
*输入:打标记后的LA/LB
*/
int intersection(Linklist *L)
{
Linklist *node;
Linklist *LC;
LC = (Linklist *)malloc(sizeof(Linklist));
LC->next = NULL;
Linklist *p = L->next;
while(p!=NULL)
{
//处理LC的数据域(*****)
for(;p!=NULL;p = p->next)
{
if(p->flag == 1)
{
node = (Linklist *)malloc(sizeof(Linklist));
node->data = p->data;
node->flag = 0;
node->next = LC->next ;
LC->next = node;
}
else
{
continue;
}
}
printf("交集是:");
while(LC->next!=NULL)
{
LC = LC->next;
printf("%d ",LC->data);
}
printf("\n");
return 1;
}
}
/*
* 并集
*输入:打标记后的LA&LB
*/
int union_LALB(Linklist *LA,Linklist *LB)
{
Linklist *p = LA,*q = LB;
Linklist *LC;
LC = (Linklist *)malloc(sizeof(Linklist));
LC->next = NULL;
Linklist *node;
while(p->next!=NULL)
{
if(p->flag==1)
{
p = p->next;
continue;
}
else
{
p = p->next;
node = (Linklist *)malloc(sizeof(Linklist));
node->flag = 0;
node->data = p->data;
node->next = LC->next;
LC->next = node;
}
}
while(q->next!=NULL)
{
q = q->next;
node = (Linklist *)malloc(sizeof(Linklist));
node->flag = 0;
node->data = q->data;
node->next = LC->next;
LC->next = node;
}
printf("并集是:");
while(LC->next!=NULL)
{
LC = LC->next;
printf("%d ",LC->data);
}
printf("\n");
return 1;
}
/*
* 差集
*输入:打标记后的LA&LB
*/
int disset(Linklist *LA,Linklist *LB)
{
Linklist *p = LA,*q = LB;
Linklist *LC;
LC = (Linklist *)malloc(sizeof(Linklist));
LC->next = NULL;
Linklist *node;
while(p->next!=NULL)
{
if(p->flag==1)
{
p = p->next;
continue;
}
else
{
p = p->next;
node = (Linklist *)malloc(sizeof(Linklist));
node->flag = 0;
node->data = p->data;
node->next = LC->next;
LC->next = node;
}
}
printf("A-B的差集是:");
while(LC->next!=NULL)
{
LC = LC->next;
printf("%d ",LC->data);
}
printf("\n");
return 1;
}
/*
* 输出打标记后的各个元素
*输入:打标记后的LA&LB
*/
int printfLinklist(Linklist *LA,Linklist *LB)
{
Linklist *a,*b;
a = LA;
b = LB;
printf("\nLA:");
while(a->next!=NULL)
{
a = a->next;
printf(" %d(%d)",a->data,a->flag);
}
printf("\nLB:");
while(b->next!=NULL)
{
b = b->next;
printf(" %d(%d)",b->data,b->flag);
}
printf("\n\n");
}
int main()
{
Linklist *LA,*LB;
int i;
LA = (Linklist *)malloc(sizeof(Linklist));
LB = (Linklist *)malloc(sizeof(Linklist));
//创建链表
printf("输入LA长度:");
scanf("%d",&i);
creatLinklinst( LA,i);
printf("输入LB长度:");
scanf("%d",&i);
creatLinklinst( LB,i);
//打标记
Link_get_flag(LA,LB);
printfLinklist(LA,LB);
//交集
intersection(LA);
//并集
union_LALB(LA,LB);
//差集
disset(LA,LB);
return 0;
}
【数据结构】c语言实现集合的交并差运算的更多相关文章
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 数据结构(C语言)—排序
数据结构(C语言)—排序 排序 排序是按关键字的非递增或递减顺序对一组记录中心进行排序的操作.(将一组杂乱无章的数据按一定规律顺次排列起来.) 未定列表与不稳定列表 假设 Ki = Kj ( 1 ≤ ...
- 数据结构( Pyhon 语言描述 ) — — 第4章:数据和链表结构
数据结构是表示一个集合中包含的数据的一个对象 数组数据结构 数组是一个数据结构 支持按照位置对某一项的随机访问,且这种访问的时间是常数 在创建数组时,给定了用于存储数据的位置的一个数目,并且数组的长度 ...
- Python语言数据结构和语言结构(2)
目录 1. Python预备基础 2. Python数据类型 3. Python条件语句 4. while循环和for循环 1. Python预备基础 1.1 变量的命名 变量命名规则主要有以下几 ...
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 图的存储结构大赏------数据结构C语言(图)
图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无 ...
随机推荐
- java 线程基础篇,看这一篇就够了。
前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...
- JS_DOM操作之绑定事件
1 - 静态绑定:直接把事件写在标签元素中 <div id="div" onclick="foo(this)">click</div> ...
- mac、ip、udp头解析
一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; // ...
- hyperf从零开始构建微服务(二)——构建服务消费者
阅读目录 构建服务消费者 安装json rpc依赖 安装JSON RPC客户端 server配置 编写业务代码 编写服务消费者类 consumer配置 配置 UserServiceInterface ...
- 洛谷P1094——纪念品分组(简单贪心)
https://www.luogu.org/problem/show?pid=1094 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价值相对均 ...
- Java Web实现登录验证码(Servlet+jsp)
1.生成验证码图片(Servlet) import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import j ...
- 对javaEE Tutorial上hello2的源码分析详解
首先: java EE 上的hello2项目是一个部署在glass fish上的开发源码的java web项目,在终端通过命令行使用maven进行打包成.war文件,最后部署到相关的glass fis ...
- 微信公众号jssdk分享接口onMenuShareAppMessage自定义的参数无效,微信分享失败原因
使用jssdk为jweixin-1.4.0.js updateTimelineShareData,安全域名接口也设置正确,可就是分享,转发朋友圈不成功. 解决方案:采用<script src=& ...
- typora+picgo+gitee 图片无法加载问题
typora+picgo+gitee 图片无法加载问题 待解决
- win10环境charles抓包unknow问题
win10环境,charles已经安装了证书,但是抓包的时候还是unknow,让人头疼. 1.确保证书安装成功. 2.检查charles设置是否正确. 进入Charles - > Proxy - ...