abstractset.cs

来自「Data Structures and Algorithms with Obj」· CS 代码 · 共 106 行

CS
106
字号
namespace Opus6
{
    using System;

    [Version("$Id: AbstractSet.cs,v 1.5 2001/10/28 19:50:09 brpreiss Exp $"), Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng.")]
    public abstract class AbstractSet : AbstractSearchableContainer
    {
        public AbstractSet(int universeSize)
        {
            this.universeSize = universeSize;
        }

        public override ComparableObject Find(ComparableObject obj)
        {
            throw new InvalidOperationException();
        }

        public override void Insert(ComparableObject obj)
        {
            this.Insert((int) obj);
        }

        public abstract void Insert(int i);
        public override bool IsMember(ComparableObject obj)
        {
            return this.IsMember((int) obj);
        }

        public abstract bool IsMember(int i);
        public static void TestMultiset(Multiset s1, Multiset s2, Multiset s3)
        {
            for (int num1 = 0; num1 < 4; num1++)
            {
                s1.Insert((ComparableObject) num1);
            }
            for (int num2 = 2; num2 < 6; num2++)
            {
                s2.Insert((ComparableObject) num2);
            }
            for (int num3 = 0; num3 < 4; num3 += 2)
            {
                s3.Insert((ComparableObject) num3);
            }
            Opus6.Console.WriteLine(s1);
            Opus6.Console.WriteLine(s2);
            Opus6.Console.WriteLine(s3);
            Opus6.Console.WriteLine(s1.Union(s2));
            Opus6.Console.WriteLine(s1.Intersection(s3));
            Opus6.Console.WriteLine(s1.Difference(s3));
            Opus6.Console.WriteLine("Using enumeration: ");
            foreach (int num4 in s3)
            {
                Opus6.Console.Write("{0} ", num4);
            }
            Opus6.Console.WriteLine();
        }

        public static void TestSet(Set s1, Set s2, Set s3)
        {
            for (int num1 = 0; num1 < 4; num1++)
            {
                s1.Insert((ComparableObject) num1);
            }
            for (int num2 = 2; num2 < 6; num2++)
            {
                s2.Insert((ComparableObject) num2);
            }
            for (int num3 = 0; num3 < 4; num3 += 2)
            {
                s3.Insert((ComparableObject) num3);
            }
            Opus6.Console.WriteLine(s1);
            Opus6.Console.WriteLine(s2);
            Opus6.Console.WriteLine(s3);
            Opus6.Console.WriteLine(s1.Union(s2));
            Opus6.Console.WriteLine(s1.Intersection(s3));
            Opus6.Console.WriteLine(s1.Difference(s3));
            Opus6.Console.WriteLine("Using enumeration: ");
            foreach (int num4 in s3)
            {
                Opus6.Console.Write("{0} ", num4);
            }
            Opus6.Console.WriteLine();
        }

        public override void Withdraw(ComparableObject obj)
        {
            this.Withdraw((int) obj);
        }

        public abstract void Withdraw(int i);

        public virtual int UniverseSize
        {
            get
            {
                return this.universeSize;
            }
        }


        protected int universeSize;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?