美文网首页
设计算法以判断集合A是否是集合B的子集

设计算法以判断集合A是否是集合B的子集

作者: 溪_午 | 来源:发表于2017-11-26 21:47 被阅读0次

一、题目:

假设递增有序的带头结点的链表A、B分别表示一个集合,试设计算法以判断集合A是否是集合B的子集,如是返回1,否则返回0。

二、思路:

1.A的值大于B的值,那就A的元素不变,B指向下一个元素,再比较;

2.A的值小于B的值,那就A指向下一个元素,B的元素不变,再比较;

3.A的值等于B的值,然后A,B同时指向下一个元素,而且n累加1;(此处的n最后用来与A链表的长度比较,若n=A链表的长度,则说明A的元素在B中全部都有,即A是B的子集)

三、思路的代码:

public boolean  gather(Node a,Node b){
        Node A=a.next;          //指向链表A的第一个结点
        Node B=b.next;          //指向链表B的第一个结点
        int n=0;                //用来计数
        while(A!=null){ 
            while(B!=null){
                if(A.data<B.data){  //如果集合A的数值大于集合B中的数值
                    A=A.next;//A的指针指向下一个元素,B的指针不变,依旧是这个元素
                    break;//终止内循环,从外循环开始,A的在一个元素和B的本元素比较
                }
                if(A.data==B.data){//如果集合A的数值等于集合B中的数值
                    A=A.next;       //A的指针指向下一个元素
                    B=B.next;       //B的指针指向下一个元素
                    n++;            //当n的值等于A集合的元素个数,说明A是B的子集
                    break;
                }
                if(A.data>B.data){  //如果集合A的数值小于集合B的数值
                    B=B.next;//那么B的指针指向下一个元素,A的指针依旧是指向本元素
                    if(A.next==null&&B.next==null){
                        if(A.data==B.data)//A和B均为最后一个元素且相等,则计数
                        n++;
                        A=A.next;   //如果A和B均为最后一个元素不相等,     则A指向空,让外部循环停止
                    }
                    break;
                }
            }
        }
        if(n==List_Length(a))   //当n的值等于A集合的元素个数,说明A是B的子集
            return true;
        else
            return false;
    }

四、完整程序的输出结果:

①A为非空集合

A为非空集合

②A为空集合


A为空集

相关文章

  • 设计算法以判断集合A是否是集合B的子集

    一、题目: 假设递增有序的带头结点的链表A、B分别表示一个集合,试设计算法以判断集合A是否是集合B的子集,如是返回...

  • 子集问题

    一、问题描述 集合{a,b}的子集有{},{a},{b},{a,b} 二、解决问题问题分析:集合的子集问题在高中就...

  • 求集合的所有子集

    求集合的所有子集 对于任意集合A,元素个数为n(空集n=0),其所有子集的个数为2^n个 如集合A={a,b,c}...

  • 集合常用方法

    CollectionUtils 判断集合是否为空 判断集合是否不为空 集合是否相等 集合的交集、并集、补集、交集的...

  • 高中数学里面常见的陷阱,留意了(上)

    一、集合 ①空集:由于空集是任何集合的子集,同时空集是任何非空集合的真子集,因此在遇到或的时候,一定需要考虑B为空...

  • Kotlin集合操作符

    总数操作符: any:判断集合中是否有满足条件的元素 all:判断集合中的元素是否都满足条件 none:判断集合是...

  • 排序算法(四):归并排序

    归并排序是通过分治的方式,将待排序集合拆分为多个子集合,对子集合排序后,合并子集合成为较大的子集合,不断合并最终完...

  • 高考数学18个易错知识点

    集合与简单逻辑 1.易错点遗忘空集致误 错因分析:由于空集是任何非空集合的真子集,因此,对于集合B,就有B=A,φ...

  • 小题(难){计数原理,集合,子集,空集,全集}

    以集合U = { a,b ,c,d }的子集中选出4 个不同的子集,需同时满足以下两个条件:( 1 ) 、U都要...

  • 【数学】集合,元素关系

    一、集合与集合之间的关系 “包含”关系: 称为子集(subset),符号表示为“⊆”。 A ⊆ B 有两种可能...

网友评论

      本文标题:设计算法以判断集合A是否是集合B的子集

      本文链接:https://www.haomeiwen.com/subject/evplbxtx.html