数据结构之集合

image.png

image.png

image.png
 //  集合类
        function Set(){
            this.dataStore = [];
            this.add = add; //  添加元素
            this.remove = remove; //  删除元素
            this.show = show;  //  显示所有元素
            this.contains = contains;  //  集合是否包含某个元素
            this.intersect = intersect;  //  交集
            this.difference = difference;  //  差集
            this.union = union;  //  并集
            this.subset = subset;  //  是否是一个集合的子集
            this.size = size;  //  集合的长度
        }

        function add(data){
            if(this.dataStore.indexOf(data)<0){
                this.dataStore.push(data);
            }else{
                return false;
            }
        }

        function remove(data){
            var pos = this.dataStore.indexOf(data);
            if(pos>-1){
                this.dataStore.splice(pos,1);
            }else{
                return false;
            }
        }

        function show(){
            return this.dataStore;
        }

        function contains(data){
            if(this.dataStore.indexOf(data)>-1){
                return true;
            }else{
                return false;
            }
        }

        function union(set){
            var newSet = new Set();
            for(var i=0;i<this.dataStore.length;i++){
                newSet.add(this.dataStore[i]);
            }
            for(var i=0;i<set.dataStore.length;i++){
                if(!newSet.contains(set.dataStore[i])){
                    newSet.dataStore.push(set.dataStore[i]);
                }
            }
            return newSet;
        }

        function intersect(set){
            var newSet = new Set();
            for(var i=0;this.dataStore.length;i++){
                if(set.contains(this.dataStore[i])){
                    newSet.add(this.dataStore[i])
                }
            }
            return newSet;
        }

        function difference(set){
            var newSet = new Set();
            for(var i=0;this.dataStore.length;i++){
                if(!(set.contains(this.dataStore[i]))){
                    newSet.add(this.dataStore[i])
                }
            }
            return newSet;
        }
        
        function size(set){
            return this.dataStore.length;
        }

        function subset(set){
            if(set.size()>this.size()){
                return false;
            }else{
                for(var i=0;i<set.dataStore.length;i++){
                    if(!this.contains(set.dataStore[i])){
                        return false;
                    }else{
                        return true;
                    }
                }
            }
        }

        var names = new Set();
        names.add('小红');
        names.add('小明');
        names.add('小涛');
        names.add('小王');
        names.add('小绿');
        names.add('小狗');
        console.log(names.show());
        names.remove('小涛');
        console.log(names.show());

        var cis = new Set();
        cis.add('张三');
        cis.add('小涛');
        cis.add('王五');
        
        var it = new Set();
        console.log('并集');
        it = names.union(cis);
        console.log(it.show());

        console.log('交集');
        it = names.intersect(cis); 
        console.log(it.show());

        console.log('差集');
        it = names.difference(cis);
        console.log(it.show())
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面讲了 ‘’谈谈数据结构之集合的顺序存储‘’,今天接着讲集合的链式存储,链式存储不像顺序存储要求存储的地址空间是...
    理想是一盏灯阅读 7,313评论 0 4
  • 集合介绍:集合是相关联成员是无序组合,且每个成员在集合中只出现一次。集合表示方式:S={1,2,3,4,5}。 一...
    super_zou阅读 559评论 0 0
  • 前言 Java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不...
    AndryYu阅读 1,447评论 0 1
  • 1.感恩先生今天做的早餐,早上喝到蔬菜水果汁,让我一天充满能量。 2.感恩大宝的班主任,每天陪孩子们写作业很晚,终...
    秋果日记阅读 126评论 0 0
  • 直到三月快结束,内心却都没有真正镇静下来专注在学习上。想想过去这一个月,熬夜,玩手机,走神,睡懒觉,生活一点也自...
    pur_19e5阅读 152评论 0 0