• 使用两个单链表表示两个集合;
  • 可键盘输入集合的元素;
  • 编写交算法和并算法

代码片段

建立链表

LinkList InitList()
{//建立链表LinkList L, p,q;int d;L = (LinkList)malloc(sizeof(LNode));p = L;scanf("%d", &d);   //输入首个元素while (d != 0)       //以0作为结束标志{p=p->next=(LinkList)malloc(sizeof(LNode));p->data = d;scanf("%d", &d);}p->next=NULL;q=L;L=L->next;free(q);       //释放头结点return L;        //返回链表首地址
}

求交算法

LinkList Intersection(LinkList a, LinkList b)
{//求交集LinkList LA, LB,q;LA =(LinkList)malloc(sizeof(LNode));LB = LA;while (a!=NULL){q=b;while (q!=NULL){if (q->data == a->data){LB=LB->next=(LinkList)malloc(sizeof(LNode));LB->data = a->data;break;}q = q->next;}a = a->next;}LB->next=NULL;LinkList p;p = LA;LA = LA->next;free(p);return LA;
}

求并算法

LinkList Unionset(LinkList a, LinkList b)
{//求并集LinkList L,q;L=b;while (a!=NULL){while (b){q=b;if(a->data==b->data)break;b=b->next;}if(b==NULL){q=q->next=(LinkList)malloc(sizeof(LNode));q->data=a->data;q->next=NULL;}b=L;a=a->next;}return L;
}

全部代码

#include <stdio.h>
#include <stdlib.h>
#define OK 1
typedef int Status;
typedef struct LNode
{int data;struct LNode *next;
}LNode,*LinkList;LinkList InitList()
{//建立链表LinkList L, p,q;int d;L = (LinkList)malloc(sizeof(LNode));p = L;scanf("%d", &d);while (d != 0){p=p->next=(LinkList)malloc(sizeof(LNode));p->data = d;scanf("%d", &d);}p->next=NULL;q=L;L=L->next;free(q);return L;
}LinkList Intersection(LinkList a, LinkList b)
{//求交集LinkList LA, LB,q;LA =(LinkList)malloc(sizeof(LNode));LB = LA;while (a!=NULL){q=b;while (q!=NULL){if (q->data == a->data){LB=LB->next=(LinkList)malloc(sizeof(LNode));LB->data = a->data;break;}q = q->next;}a = a->next;}LB->next=NULL;LinkList p;p = LA;LA = LA->next;free(p);return LA;
}LinkList Unionset(LinkList a, LinkList b)
{//求并集LinkList L,q;L=b;while (a!=NULL){while (b){q=b;if(a->data==b->data)break;b=b->next;}if(b==NULL){q=q->next=(LinkList)malloc(sizeof(LNode));q->data=a->data;q->next=NULL;}b=L;a=a->next;}return L;
}Status traverselist(LinkList a)
{//遍历链表while(a!=NULL){printf("%3d",a->data);a=a->next;}return OK;
}int main()
{LinkList A,B,INT,UNION;printf("请输入集合A的值(输入0结束):");A = InitList();printf("请输入集合B的值(输入0结束):");B = InitList();INT=Intersection(A,B);printf("\n所求交集为:");traverselist(INT);UNION=Unionset(A,B);printf("\n所求并集为:");traverselist(UNION);return 0;
}

C语言:用链表实现集合的并和交相关推荐

  1. (C语言)链表的实现集合的相关操作

    原文链接:https://blog.csdn.net/kobe_jr/article/details/80543611 集合的特征:确定性/ 互异性/ 无序性. 常见的操作:1.查找集合中是否包含这个 ...

  2. 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...

    的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...

  3. C语言打印链表的中间节点的算法(附完整源码)

    C语言打印链表的中间节点的算法 C语言打印链表的中间节点的算法完整源码(定义,实现,main函数测试) C语言打印链表的中间节点的算法完整源码(定义,实现,main函数测试) #include < ...

  4. C语言通过链表指针删除链表节点的算法(附完整源码)

    C语言通过链表指针删除链表节点的算法 C语言通过链表指针删除链表节点的算法完整源码(定义,实现,main函数测试) C语言通过链表指针删除链表节点的算法完整源码(定义,实现,main函数测试) #in ...

  5. C语言删除链表的算法(附完整源码)

    C语言删除链表的算法 C语言删除链表的算法完整源码(定义,实现,main函数测试) C语言删除链表的算法完整源码(定义,实现,main函数测试) #include <iostream>st ...

  6. C语言实现链表(附完整源码)

    C语言实现链表 链表 C语言实现链表完整源码 链表 链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用.链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定 ...

  7. c语言在文本每一行末尾追加字符串,c语言在末尾添加 C语言 在链表尾部添加节点...

    怎么用C语言在一个文件后面添加内容 怎么用C语言在一个文件后面添加内容 使用fopen函数打开文件,用fseek函数将文件位置调整到文件末尾,然后用fwrite函数写入数据即可.下面的示例代码,向1. ...

  8. 剑指offer之C语言实现链表(两种方式)

    1 问题 用C语言实现链表 2 代码实现 #include <stdio.h> #include <stdlib.h>#define true 0 #define false ...

  9. c语言将链表写入二进制文件_通过逐级遍历将二进制树转换为单链表的C程序

    c语言将链表写入二进制文件 Problem statement: Write a C program to convert a binary tree into a single linked lis ...

最新文章

  1. 码云上传代码添加标签_如何使用码云-百度经验
  2. 【ZJOI2013】k大数查询 BZOJ 3110
  3. oracle 逻辑回归,逻辑回归 (Logistic Regression):计算概率
  4. mysql怎么实现确认收货_Tp结合redis实现订单自动收货
  5. css3 点击爆炸下落
  6. 三种 SQL 执行语句
  7. 11 | 脑裂: 一次奇怪的数据丢失
  8. html中输出PHP的下拉列表,html中关于下拉列表select的图文代码详解
  9. SLS控制台内嵌操作指南
  10. MATLAB学习笔记——二维和三维绘图
  11. 我要发明计算机作文,我要发明机器人作文700字
  12. 《一页纸项目管理》读书笔记
  13. python aiml开发文档,带有Python的AIML文件
  14. 永中集成Office2007产品简介
  15. unity3——Humanoid与generic的区别
  16. 超级复制shadowcopy
  17. linux 卸载skype,在Debian 10操作系统上安装和卸载Skype的方法
  18. 搭建亿万级别短信服务发送平台
  19. 电话号码大全(常识版)
  20. 有没有便宜一点的网站服务器,有便宜一点的云服务器卖吗

热门文章

  1. Mysql创建管理表的内容上的打字练习
  2. MSP430F5529 程序
  3. vsan服务器系统盘,vSAN群集只显示一个vSAN存储
  4. 【EasyAR学习】显示模型
  5. DR-CAN的工程数学基础学习笔记(2)线性化泰勒级数泰勒公式
  6. 由RGB到HSV颜色空间的理解
  7. ssh是什么?主要拿来干嘛?
  8. MyBatis-Plus实现数据库curd操作
  9. CSS学习笔记(续)-常见样式属性
  10. 服务器满了收不到邮件,延续昨天的问题,服务器可以发送,就是收不到邮件