使用单链表表示集合。编写两个算法(求交算法和求并算法),并输出最终的结果。
测试用例:集合A为{3,4,1,6},集合A为{2,3,6,7},
交集为{3,6}
并集为{1,2,3,4,6,7}

#include<stdio.h>
#include<iostream>
using namespace std;
#define N 4
typedef struct Lnode
{int data;struct Lnode *next;
}Lnode, *Linklist;//类型定义//函数声明
//尾插法创建一个单链表(顺序输入一个数组)
Linklist Createndlist(int a[N])
{Linklist L;L = (Lnode*)malloc(sizeof(Lnode));if (L == NULL){cout << "error";exit(0);}else L->next = NULL;Linklist tail, p;tail = L;int j;for (j = 0; j < N; j++){p = (Lnode*)malloc(sizeof(Lnode));if (p == NULL){cout << "error";exit(0);}else p->next = NULL;p->data = a[j];tail->next = p;tail = p;}tail->next = NULL;return L;
}
//输出单链
void putlist(Linklist L)
{Linklist p;p = L->next;cout << "当前链表为:";while (p != NULL){cout << p->data << " ";p = p->next;}cout << endl;
}
//求交集
Linklist Getjiaolist(Linklist LA, Linklist LB,Linklist LC)
{Linklist p, q, p1;p = LA->next;//LA->next = NULL;p1 = LC;q = LB->next;while (p){if (p->data == q->data){Linklist a;a = (Lnode*)malloc(sizeof(Lnode));   //申请一个新结点if (a == NULL){cout << "error";exit(0);}else a->next = NULL;a->data = p->data;a->next = NULL;p1->next = a;p1 = a;p = p->next;q = LB->next;}else{if (q->next != NULL)q = q->next;else{p = p->next;q = LB->next;}}}return LC;
}
//求并集
Linklist Getbinglist(Linklist LA, Linklist LB)
{Linklist m;m = LA->next;while (m&&m->next != NULL){m = m->next;}m->next = LB->next;Linklist p, q;p = LA->next;q = p;while (p->next){if (p->data == q->next->data){if (q->next->next == NULL){q->next = NULL;p = p->next;q = p;}else{q->next = q->next->next;}}else{if (q->next->next == NULL){p = p->next;q = p;}else q = q->next;}}return LA;}
int main()
{Linklist LC;LC = (Lnode*)malloc(sizeof(Lnode));LD = (Lnode*)malloc(sizeof(Lnode));int a[N], b[N];cout << "正在创建链表LA:..." << endl;printf("请输入%d个链表元素的值:", N);for (int i = 0; i < N; i++){cin >> a[i];}Linklist LA;LA = Createndlist(a);cout << "正在创建链表LB:..." << endl;printf("请输入%d个链表元素的值:", N);for (int i = 0; i < N; i++){cin >> b[i];}Linklist LB;LB = Createndlist(b);Getjiaolist(LA,LB,LC);cout << "所得交集为:";putlist(LC);Getbinglist(LA, LB);cout << "所得并集为:";putlist(LA);return 0;
}

链表中的并集和交集(c/c++实现)相关推荐

  1. GO和JAVA如何处理两个数组中的并集和交集

    最近,在项目中碰到这样一个问题,我们在查看某个模块内容的是否,需要获取该角色下所有用户权限的集合,而某个角色下的用户权限不一样,那么我们需要去得到所有用户拥有的权限的一个并集,根据这个整理了关于go和 ...

  2. java链表并集_求链表的并集和交集

    给定2个链表,求这2个链表的并集(链表)和交集(链表).不要求并集(链表)和交集(链表)中的元素有序. 如,输入: List1: 10->15->4->20 List2: 8-> ...

  3. C语言编程集合A和B的交集,求两个递增链表A和B的交集,并将结果放在链表A中

    问题描述: 已知两个链表A和B分别表示两个集合,其元素递增排列.编制函数,求A与B 的交集,并存放于A链表中. 问题解答: 算法思想:釆用归并的思想,设置两个工作指针pa和pb,对两个链表进行归并扫描 ...

  4. 9.已知两个链表A和B分别表示两个集合,其元素递增排列,设计一个算法,求A和B的交集,并存放于A链表中(A中只有A与B相同的部分)

    算法思想:设置两个指针依次遍历链表A和B,如果A中数据域元素元素小于B中的数据域元素,则释放A中的结点,指向A链表的指针后移,若B中的元素小则释放B中所指结点,如果A中还有剩余则依次释放A中剩余结点, ...

  5. c语言链表集合求并集用字母表示,c语言实现的链表集合的并集与交集

    c语言,链表,集合求并集,交集 #include #include typedefintDatatype; //定义链表的节点 typedefstructLNode{ Datatype data; L ...

  6. 用c 语言实现数组的并集,C ++程序查找两个未排序数组的并集和交集

    在本文中,我们将讨论一个程序来查找两个给定的未排序数组的并集和交集. 让我们用" A"和" B"表示两个数组.然后这些数组的并集用A∪B表示,它基本上是两个给定 ...

  7. 【温故知新】CSS学习笔记(并集和交集选择器)

    并集和交集选择器 这一节我们介绍另外两个"复合选择器",并集选择器和交集选择器. 复习一下上一讲的"子代选择器",看下面的例子,要求将"上级菜单&qu ...

  8. LeetCode19. Remove Nth Node From End of List 删除链表中的倒数第n个位置的元素

    前言 本文是LeetCode19. Remove Nth Node From End of List解法,这个题目需要删除链表中的倒数第n个位置的元素 代码 # -*- coding: utf-8 - ...

  9. LeetCode中等题之两两交换链表中的节点

    题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: 输入:head = [1,2,3,4] 输出:[ ...

最新文章

  1. mysql经纬度转距离_Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)
  2. SAP FICO AS03显示固定资产主数据
  3. 从tomcat下载文件的配置方法(很全呢)
  4. 事件ID 6038审核NTLM使用情况
  5. 入门HTML的回顾,小总结
  6. 【收集】11款Linux数据恢复工具
  7. java PKCS7Padding 加密Cannot find any provider supporting AES/CBC/PKCS7Padding 解决办法
  8. yjv是电缆还是电线_2019最新电缆载流量对照表,不用每次都百度了!
  9. oracle-01122,oracle ORA-01200ORA-01110ORA-01122
  10. 从今天开始 好好规划自己
  11. WindowManager添加一个悬浮的Window
  12. 操作系统总结之 输入输出系统(下)
  13. css做计算器,CSS3 纯CSS计算器
  14. window.dialogArguments只兼容ie的问题解决
  15. 2018年南京公积金贷款新政答疑来了!首套房最高可贷50万元/人(附首套房认定标准)...
  16. mysql straight join_在MySQL中使用STRAIGHT_JOIN的教程
  17. redis常用命令收集
  18. Pathon基础篇数据类型之——数值、字符串与列表内容
  19. Android 10获取手机相册照片变成白色空白
  20. Java word转pdf 精确获取文件页数(jacob)

热门文章

  1. Blueprints - UE4第三人称游戏角色控制
  2. 腾讯云建站主机的一次奇妙之旅
  3. 如何做好一个产品的运营规划
  4. 微信开发者工具出现catch sdkSubPackage: sclEngine error: TypeError: Cannot redefine property:
  5. istio: h5应用访问后端接口 (跨域+路由管理)
  6. Java编码规范--命名风格
  7. 国标QAl9-4铝青铜棒 铜管 QAl9-4机加工性能
  8. 数据库升级后报ORA-06550、PLS-00306问题解决
  9. 对计算机应用领域中的CMI,计算机选择题复习题-答案
  10. death coming一直连接服务器,Death Coming死活进不去怎么解决