已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。

#include<stdio.h>
struct node{
    int elem;
    struct node* next;
};
/*
    本题的解法思路较简单:
    因为要求集合A和集合B的差集(A-B),结果保存在集合A中.
    所以我们取出集合A中每一个元素,然后在集合B中寻找(代码22行所实现) 找到即删除此节点 否则保留
    此时while循环跳出只有两种情况,pb为NULL或者 pa->elem==pb->elem
    当pb不为null时,即找出集合A和集合B的公有元素,此时要删除这个元素
        pre(实现删除节点之后的链接)
        当pre为NULL时,说明是首次找到A和B的公有元素,此时 *LA指向pa->next 所以*LA仍然是头结点
        当pre不为NULL时, pre指向pa->next,顺利实现删除节点的链接
*/
void difference(node** LA,node* LB){
    node*pa,*pb,*pre,*q;
    pre=NULL;
    pa=*LA;/*LA是指向指针的指针,pa指向集合的元素*/
    while(pa){
        pb=LB;/*pb指向集合B的元素*/
        while(pb && pa->elem!=pb->elem) /*在链表LB中寻找与pa所指元素相等的节点*/
            pb=pb->next;
        if(pb){ /*pa所指元素与pb所指元素相等*/
            if(!pre){
                *LA=pa->next;
            }else{
                pre->next=pa->next;
            }
            q=pa;/*求差集 所以要删除pa节点*/
            pa=pa->next;
            free(q);
        }else{
            pre=pa;
            pa=pa->next;
        }
    }
}

求解集合A与B的差集相关推荐

  1. python两个集合的交集 合集 差集

    python两个集合的交集 合集 差集 https://blog.csdn.net/qq_17753903/article/details/84899612 python & | and or ...

  2. ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。②集合A、B的差集③对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

    文章目录 ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符 ②集合A.B的差集 ③对分行输入的若干字符串按字典序(由小到大)进行排序并输出. ①编写一个程序,从 ...

  3. 求差集(C语言)两个集合的差集定义如下:集合A、B的差集,由所有属于A但不属于B的元素构成。输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。

    [问题描述] 两个集合的差集定义如下: 集合A.B的差集,由所有属于A但不属于B的元素构成. 输入两个集合A.B,每个集合中元素都是自然数.求集合A.B的差集. [输入形式] 从标准输入先输入集合元素 ...

  4. matlab求解集合覆盖问题,贪心算法实践之集合覆盖问题

    介绍 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法 贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解 ...

  5. 集合交集,并集,差集运算

    举例 class User {private Long cardId;private Long deviceId;public User(Long cardId, Long deviceId) {th ...

  6. Java中求集合交集、并集、差集

    前言 如果是自定义类,需要重写equals方法,如果使用Set集合,还需要重写hashCode方法:如下以User为例子: public class User{private Integer id;p ...

  7. 分治法求解集合的众数及其重数

    1. 分治法 分治法解题过程主要分为分.治.合三个步骤",应用该方法的基本过程如下: (1) 将原问题分解为若干个规模较小的子问题 (2) 对这些子问题分别求解 (3) 对各个子问题的解进行 ...

  8. python set集合 交集,并集,差集,对称差集

    set集合测试打印如下: setA={1,2,3,4} setB={3,4,5,6} print(setA-setB) >>> {1, 2} - 取差集 print(setB-set ...

  9. set集合及(交集,差集,并集)计算

    一.set集合的概述 set是与list.Queue同级的集合. Set集合类似于一个罐子,程序可以依次把多个对象"丢进"Set集合,而Set集合通常不能记住元素的添加顺序.实际上 ...

最新文章

  1. sudo apt-get install 报无法获得锁
  2. C++构造函数调用虚函数的后果
  3. 【spring-session】 1.x与2.x 不兼容
  4. Java堆排序递归_大顶堆第二弹----堆排序(递归实现)
  5. JavaScript 温故知新 00
  6. 【人体姿态估计2】Real-time Multi-person 2d pose estimation using part affinity fields_2017
  7. 实际的Reactor操作–检索Cloud Foundry应用程序的详细信息
  8. 【逆强化学习-2】最大熵学习(Maximum Entropy Learning)
  9. C++/C--C++中substr和Java的substring对比【转载】
  10. amp;#9733;《唐琅探案》后记【3】
  11. 百家讲坛全集免费下载
  12. index函数python查询所有_Python List index()方法
  13. 【dgl框架】dgl.metapath_reachable_graph函数解析
  14. 【前端用法】html5实现地理位置定位(JS获取当前地理位置的方法)
  15. python中如何解决类互相调用问题_两个.py之间类的相互调用问题
  16. python计算圆周率_python模拟蒙特·卡罗法计算圆周率
  17. 【C语言培训2】 前言 C语言程序设计课程介绍
  18. python过去电脑网关不可用怎么办_住宅网关不可用
  19. 【云杂谈】《公共云被用于黑客和恐怖活动的风险》
  20. 用python制作文本编辑器

热门文章

  1. 2020年创业公司到底过得怎么样?数据分析来为你揭晓
  2. 【全军覆没】麻省理工把中国学生拉入黑名单,斯坦福取消中国大陆面试! 这是怎么了?...
  3. 五一惠州双月湾游,海滩,帐篷,野营,烧烤、篝火晚会
  4. 对比图像分类五大方法:KNN、SVM、BPNN、CNN和迁移学习
  5. R和RStudio下载安装详细步骤
  6. 极兔速递完成17.35亿美元融资?回应:不实消息
  7. 王者荣耀回应服务器崩了:已处理完成 将陆续补发相应赔偿
  8. 于谦加盟高德地图 推出“哪儿都熟”相声导航
  9. keep公众号就“借鉴”原创文章致歉:将停更一周
  10. 上海新阳半导体收到ASML-1400光刻机 将用于研发193nm ArF光刻胶