⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstracthashtable.cs

📁 Data Structures and Algorithms with Object-Oriented Design Patterns in C# 这本书的范例代码dll自己反编译的source
💻 CS
字号:
namespace Opus6
{
    using System;
    using System.Collections;
    using System.Text;

    [Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng."), Version("$Id: AbstractHashTable.cs,v 1.4 2001/10/28 19:50:09 brpreiss Exp $")]
    public abstract class AbstractHashTable : AbstractSearchableContainer, HashTable, SearchableContainer, Container, IComparable, IEnumerable
    {
        protected AbstractHashTable()
        {
        }

        protected int F(object obj)
        {
            return obj.GetHashCode();
        }

        protected int G(int x)
        {
            return (Math.Abs(x) % this.Length);
        }

        protected int H(object obj)
        {
            return this.G(this.F(obj));
        }

        private static string Octal(int arg)
        {
            uint num1 = (uint) arg;
            char[] chArray1 = new char[12];
            int num2 = 0;
            while (num1 != 0)
            {
                chArray1[num2++] = (char) ((ushort) ((num1 % 8) + 0x30));
                num1 /= 8;
            }
            chArray1[num2++] = '0';
            StringBuilder builder1 = new StringBuilder();
            while (num2 > 0)
            {
                builder1.Append(chArray1[--num2]);
            }
            return builder1.ToString();
        }

        public static void TestHash()
        {
            Opus6.Console.WriteLine("ett={0}", AbstractHashTable.Octal(((ComparableObject) "ett").GetHashCode()));
            Opus6.Console.WriteLine("tv\x00e5={0}", AbstractHashTable.Octal(((ComparableObject) "tv\x00e5").GetHashCode()));
            Opus6.Console.WriteLine("tre={0}", AbstractHashTable.Octal(((ComparableObject) "tre").GetHashCode()));
            Opus6.Console.WriteLine("fyra={0}", AbstractHashTable.Octal(((ComparableObject) "fyra").GetHashCode()));
            Opus6.Console.WriteLine("fem={0}", AbstractHashTable.Octal(((ComparableObject) "fem").GetHashCode()));
            Opus6.Console.WriteLine("sex={0}", AbstractHashTable.Octal(((ComparableObject) "sex").GetHashCode()));
            Opus6.Console.WriteLine("sju={0}", AbstractHashTable.Octal(((ComparableObject) "sju").GetHashCode()));
            Opus6.Console.WriteLine("\x00e5tta={0}", AbstractHashTable.Octal(((ComparableObject) "\x00e5tta").GetHashCode()));
            Opus6.Console.WriteLine("nio={0}", AbstractHashTable.Octal(((ComparableObject) "nio").GetHashCode()));
            Opus6.Console.WriteLine("tio={0}", AbstractHashTable.Octal(((ComparableObject) "tio").GetHashCode()));
            Opus6.Console.WriteLine("elva={0}", AbstractHashTable.Octal(((ComparableObject) "elva").GetHashCode()));
            Opus6.Console.WriteLine("tolv={0}", AbstractHashTable.Octal(((ComparableObject) "tolv").GetHashCode()));
        }

        public static void TestHashTable(HashTable hashTable)
        {
            Opus6.Console.WriteLine(hashTable);
            hashTable.Insert(new Association("foo", 1.2));
            hashTable.Insert(new Association("bar", 3.4));
            hashTable.Insert(new Association("foo", 5.6));
            Opus6.Console.WriteLine(hashTable);
            ComparableObject obj1 = hashTable.Find(new Association("foo"));
            Opus6.Console.WriteLine(obj1);
            hashTable.Withdraw(obj1);
            Opus6.Console.WriteLine(hashTable);
            foreach (Association association1 in hashTable)
            {
                Opus6.Console.WriteLine(association1);
            }
        }


        public abstract int Length { get; }

        public virtual double LoadFactor
        {
            get
            {
                return (((double) this.Count) / ((double) this.Length));
            }
        }

    }
}

⌨️ 快捷键说明

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