博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构和算法 – 10.集合
阅读量:7043 次
发布时间:2019-06-28

本文共 3952 字,大约阅读时间需要 13 分钟。

集合:

联合、交叉、差异、子集

using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 数据结构和算法{       public partial class SCet    {        static void Main()        {            SCet setA = new SCet();            SCet setB = new SCet();            setA.Add("milk");            setA.Add("eggs");            setA.Add("bacon");            setA.Add("cereal");            setB.Add("bacon");            setB.Add("eggs");            setB.Add("bread");            SCet setC = new SCet();            setC = setA.Union(setB);            Console.WriteLine();            Console.WriteLine("A: " + setA);            Console.WriteLine("B: " + setB.ToString());            Console.WriteLine("A union B: " + setC.ToString());            setC = setA.Intersection(setB);            Console.WriteLine("A intersect B: " + setC.ToString());            setC = setA.Difference(setB);            Console.WriteLine("A diff B: " + setC.ToString());            setC = setB.Difference(setA);            Console.WriteLine("B diff A: " + setC.ToString());            if (setB.Subset(setA))                Console.WriteLine("b is a subset of a");            else                Console.WriteLine("b is not a subset of a");            Console.Read();        }    }    public partial class SCet    {        private Hashtable data;        public SCet()        {            data = new Hashtable();        }         //More code to follow        public void Add(Object item)        {            if (!data.ContainsValue(item))            {                data.Add(Hash(item), item);            }        }        public string Hash(object item)        {            char[] chars;            string s = item.ToString();            int hashValue = 0;            chars = s.ToCharArray();            for (int i = 0; i <= chars.GetUpperBound(0); i++)            {                hashValue += (int)chars[i];            }            return hashValue.ToString();        }        public void Remove(object item)        {            data.Remove(Hash(item));        }        public int Size()        {            return data.Count;        }        //联合:把一个集合的成员与另一个集合的成员合并从而获得新的集合。        public SCet Union(SCet aSet)        {            SCet tempSet = new SCet();            foreach (var hashObject in data.Keys)            {                tempSet.Add(data[hashObject]);            }            foreach (var hashObject in aSet.data.Keys)            {                if (!data.ContainsKey(hashObject))                {                    tempSet.Add(aSet.data[hashObject]);                }            }            return tempSet;        }        //交叉:把已经存在于另一个集合的所有成员添加给一个集合从而获得新的集合。        public SCet Intersection(SCet aSet)        {            SCet tempSet = new SCet();            foreach (var hashObject in data.Keys)            {                if (aSet.data.Contains(hashObject))                {                    tempSet.Add(aSet.data[hashObject]);                }            }            return tempSet;        }        //是否为子集        public bool Subset(SCet aSet)        {            if (this.Size() > aSet.Size())                return false;            else                foreach (Object key in this.data.Keys)                {                    if (!(aSet.data.Contains(key)))                        return false;                }            return true;        }        //差异:把不存在于另一个集合的所有成员添加给一个集合从而获得新的集合。        public SCet Difference(SCet aSet)        {            SCet tempSet = new SCet();            foreach (Object hashObject in data.Keys)            {                if (!(aSet.data.Contains(hashObject)))                    tempSet.Add(data[hashObject]);            }            return tempSet;        }        public override string ToString()        {            string s = "";            foreach (Object key in data.Keys)                s += data[key] + " ";            return s;        }    }}

转载地址:http://hoqal.baihongyu.com/

你可能感兴趣的文章
《JavaScript框架设计》——2.2 加载器所在路径的探知
查看>>
《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.5节小结
查看>>
《ANTLR 4权威指南 》一第3章 入门的ANTLR项目
查看>>
该用什么心态,去面对不喜欢的工作?
查看>>
《Docker生产环境实践指南》——2.4 配置管理
查看>>
《R绘图系统(第2版)》一2.2 plot()函数
查看>>
创业18般武器之ICP许可证过审秘籍
查看>>
利用APT实现Android编译时注解
查看>>
spring 4.0.2.RELEASE 自动化装配
查看>>
DIY物联网应用 3-控制继电器
查看>>
MaxCompute基础与MaxCompute SQL优化
查看>>
CentOS下软链接建立与删除
查看>>
使用阿里云容器服务Jenkins 2.0实现持续集成之Pipeline篇(updated on 2016.12.23)
查看>>
Redis---持久化 ( RDB AOF )
查看>>
Introducing mcrouter: A memcached protocol router for scaling memcached deployments
查看>>
码栈开发手册(四)---编码方式开发(其他功能函数)
查看>>
android动画之interpolator和typeEvaluator用法详解
查看>>
排序算法之Bogo排序
查看>>
Speed up your Internet browsing on Linux with a DNS Cache server
查看>>
我的失败与伟大 —— 合作伙伴的甄别
查看>>