zoukankan      html  css  js  c++  java
  • 数据结构----集合

    /*
    * 数据结构——集合
    * 集合(set)是一种包含不同元素的数据结构。集合中的元素称为成员。两个特点:1、成员是无序的  2、集合不能存在相同的成员
    *
    * 定义:
    *       1、不包含任何成员的集合称为空集,全集则是包含一切可能成员的集合
    *       2、如果两个集合的成员完全相同,则称两个集合相等
    *       3、如果一个集合中所有的成员都属于另外一个集合,则前一集合称为后一集合的子集
    * */
    function add(data) {
        if (this.dataStore.indexOf(data) === -1) {
            this.dataStore.push(data);
            return true;
        }
        return false;
    }
    function remove(data) {
        var index = this.dataStore.indexOf(data);
        if (index > -1) {
            this.dataStore.splice(index,1);
            return true;
        }
        return false;
    }
    function show() {
        console.log(this.dataStore);
    }
    function size() {
        return this.dataStore.length;
    }
    function contains(data) {
        return this.dataStore.indexOf(data) > -1;
    }
    //并集操作
    function union(set) {
        var tempSet = new Set();
        for (var i = 0 ; i < this.dataStore.length; i++) {
            tempSet.add(this.dataStore[i]);
        }
        for(var j = 0; j < set.dataStore.length; j++) {
            if (!tempSet.contains(set.dataStore[j])) {
                tempSet.add(set.dataStore[j])
            }
        }
        return tempSet;
    }
    //交集操作 a.intersect(b) b相对a的交集
    function intersect(set) {
        var tempSet = new Set();
        for(var i = 0 ; i < set.dataStore.length; i++) {
            if (this.contains(set.dataStore[i])) {
                tempSet.add(set.dataStore[i])
            }
        }
        return tempSet;
    }
    //是否是子集判断 a.subset(b) b是否是a的子集
    function subset(set) {
       if (this.size() < set.size()) {
           return false;
       }
       for(var i = 0; i < set.size(); i++) {
           if (!this.contains(set.dataStore[i])) {
               return false;
           }
       }
       return true;
    }
    //补集操作 a.difference(b)  b相对于a的补集
    function difference(set) {
        var tempSet = new Set();
        for(var i = 0; i< this.size();i++) {
            if (!set.contains(this.dataStore[i])) {
                tempSet.add(this.dataStore[i]);
            }
        }
        return tempSet;
    }
    function Set() {
        this.dataStore = [];
        this.add = add;
        this.remove = remove;
        this.size = size;
        this.contains = contains;
        this.union = union;
        this.intersect = intersect;
        this.subset = subset;
        this.difference = difference;
        this.show = show;
    }
    
    var s = new Set();
    
    s.add("1");
    s.add("2");
    s.add("3");
    
    var dmp = new Set();
    dmp.add("1");
    dmp.add("4");
    dmp.add("5");
    dmp.add("6");
    
    var c = s.union(dmp);
    
    console.log(c);
    
    var i = s.intersect(dmp);
    
    console.log(i);
    
    console.log(s.subset(i));
    
    console.log(s.difference(i))
  • 相关阅读:
    Jenkins 集成Sonar scanner的使用案例
    Sonarqube 安装 及与Jenkins sonar scanner插件集成部署
    shell if 判断匹配1位数字
    使用tcpdump抓包
    golang + snap7 对西门子plc进行读写
    python基础练习题(题目 求输入数字的平方,如果平方运算后小于 50 则退出)
    python基础练习题(题目 统计 1 到 100 之和)
    python基础练习题(题目 使用lambda来创建匿名函数。)
    微服务状态之python巡查脚本开发
    python基础练习题(题目 计算两个矩阵相加)
  • 原文地址:https://www.cnblogs.com/yunnex-xw/p/9871646.html
Copyright © 2011-2022 走看看