数据结构与算法九(js 实现集合类)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>集合类</title>
</head>
<body>
<script>
    function Set(){
        this.item={};
        //添加方法
        Set.prototype.add = function (value) {
            //判断集合中是否有该元素
            if (this.has(value)) return false;

            //将元素添加到对象中
            this.item[value] = value;
            return true;
        }

        Set.prototype.has = function (value) {
            return this.item.hasOwnProperty(value);
        }
        Set.prototype.remove = function (value) {
            if (!this.has(value)) return false;
            //删除元素
            delete  this.item[value];
            return true;
        }
        Set.prototype.clear = function () {
            this.item = {};
            return true;
        }

        Set.prototype.size = function () {
            return Object.keys(this.item).length;
        }

        Set.prototype.values = function () {
            return Object.keys(this.item);
        }

        //集合间的操作
        //并集
        Set.prototype.union = function (otherSet) {
            var  unionSet = new Set();
            var values = this.values();
            for(var i = 0; i < values.length;i++){
                unionSet.add(values[i]);
            }

            //添加B集合
            values = otherSet.values();
            for(var i = 0;i < values.length;i++){
                unionSet.add(values[i]);//因为添加方法里面有进行是否存在当前集合
            }
            return unionSet;
        }
        //交集
        Set.prototype.intersection = function (otherSet) {
            var intersectionSet = new Set();
            var values = otherSet.values();
            for(var i = 0;i < values.length;i++){
                if (this.has(values[i])){
                    intersectionSet.add(values[i]);
                }
            }
            return intersectionSet;
        }
        //差集
        Set.prototype.differenceSet = function (otherSet) {

            var differenceSet = new Set();
            var values = this.values();
            for(var i = 0; i < values.length;i ++){
                if (!otherSet.has(values[i]));
                {
                    differenceSet.add(values[i]);
                }
            }
            return differenceSet;
        }
        //子集
        Set.prototype.subset = function (otherSet) {
            var values = otherSet.values();
            for(var i = 0; i < values.length;i++){
                if (!this.has(values[i])){
                    return false;
                }
            }
            return true;
        }

    }
//
//    var set = new Set();
//    set.add('a');
//    set.add('b');
//    set.add('c');
//    set.add('d');
//    alert(set.add('c'));
//    alert(set.values());
//    alert(set.remove('c'));
//    alert(set.remove('c'));
//    alert(set.values());
//    alert(set.clear());
//    alert(set.values());


    var set = new Set();
    set.add('a');
    set.add('b');
    set.add('c');
    var otherSet = new Set();

    otherSet.add('1');
    otherSet.add('2');
    otherSet.add('3');
    otherSet.add('a');
//    var union = set.union(otherSet);
//    alert(union.values());
//    alert(set.intersection(otherSet).values());
//    alert(set.differenceSet(otherSet).values());
    var subS = new Set();
    subS.add('a');
    subS.add('b');
    alert(set.subset(subS));
    alert(otherSet.subset(subS));

</script>


</body>
</html>

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值