Exemple #1
0
        public static void Main()
        {
            var myhashtable = new MyHashTable<int, string>();

            myhashtable.Add(3, "ar");

            myhashtable[2] = "asd";

            var indexCheck = myhashtable[2];

            Console.WriteLine("toString:");
            Console.WriteLine(myhashtable);

            Console.WriteLine("indexer:");
            Console.WriteLine(myhashtable[2]);
            Console.WriteLine(indexCheck);

            Console.WriteLine("keys:");
            var keysChecker = myhashtable.Keys;

            foreach (var key in keysChecker)
            {
                Console.WriteLine(key);
            }

            Console.WriteLine("count:");
            Console.WriteLine(myhashtable.Count);
            Console.WriteLine("remove:");
            myhashtable.Remove(4);

            Console.WriteLine(myhashtable[2]);

            myhashtable.Remove(2);

            Console.WriteLine(myhashtable[2]);
            Console.WriteLine("count:");
            Console.WriteLine(myhashtable.Count);

            string res;
            var findChecker = myhashtable.Find(3, out res);
            Console.WriteLine("Find value by key 3:");
            Console.WriteLine(res);
            Console.WriteLine(findChecker);

            Console.WriteLine(myhashtable);
            Console.WriteLine("clear");
            myhashtable.Clear();
            Console.WriteLine(myhashtable);
            Console.WriteLine("----");
            Console.WriteLine("resize");

            for (int i = 0; i < 100; i++)
            {
                myhashtable.Add(i, i.ToString());
            }

            Console.WriteLine(myhashtable);
        }
        private static void Main()
        {
            var hashTable = new MyHashTable<string, int>();

            hashTable.Add("five", 5);
            hashTable.Add("six", 6);

            Console.WriteLine(hashTable.Find("five"));
            // throws exception
            //Console.WriteLine(hashTable.Find("seven"));

            //test auto grow

            for (int i = 0; i < 16; i++)
            {
                hashTable.Add(i.ToString(), i);
                Console.WriteLine(hashTable.Count);
            }

            Console.WriteLine(hashTable.Find("five"));
            Console.WriteLine(hashTable.Find("9"));

            Console.WriteLine(hashTable.Count);
            hashTable.Remove("9");
            Console.WriteLine(hashTable.Count);

            Console.WriteLine("test indexator");
            Console.WriteLine(hashTable["10"]);
            hashTable["10"]++;
            Console.WriteLine(hashTable["10"]);
            // throws exception
            //Console.WriteLine(hashTable.Find("9"));

            Console.WriteLine("Test HashTable.Keys enumerator:");
            foreach (var key in hashTable.Keys)
            {
                Console.WriteLine(key);
            }

            Console.WriteLine("Test HashTable enumerator:");
            foreach (var pair in hashTable)
            {
                Console.WriteLine("{0} -> {1}", pair.Key, pair.Value);
            }
        }
        public void TestFind()
        {
            var hashTable = new MyHashTable<string, int>
            {
                { "five", 5 },
                { "six", 6 }
            };

            Assert.AreEqual(5, hashTable.Find("five"));
        }
Exemple #4
0
        public void TestAdd_Duplicates()
        {
            MyHashTable <string, int> hashTable = new MyHashTable <string, int>();

            hashTable.Add("asd", 1);
            hashTable.Add("asd", 10);

            Assert.AreEqual(1, hashTable.Count);
            Assert.AreEqual(10, hashTable.Find("asd"));
        }
Exemple #5
0
        public void TestFind_Fail()
        {
            MyHashTable <string, int> hashTable = new MyHashTable <string, int>();

            hashTable.Add("asd", 10);

            int count = 1000;

            for (int i = 0; i < count; i++)
            {
                hashTable.Add(i.ToString(), i);
            }

            int value = hashTable.Find("qwe");
        }
Exemple #6
0
        public void TestFind_Success()
        {
            MyHashTable <string, int> hashTable = new MyHashTable <string, int>();

            hashTable.Add("asd", 10);

            int count = 1000;

            for (int i = 0; i < count; i++)
            {
                hashTable.Add(i.ToString(), i);
            }

            int value = hashTable.Find("asd");

            Assert.AreEqual(10, value);
        }
        public static void Main()
        {
            var table = new MyHashTable<string, string>();
            table.Add("first", "Pesho");
            table.Add("second", "Gosho");
            table.Add("third", "Tosho");
            table.Add("fourth", "Ivan");
            Console.WriteLine(table.Count);

            foreach (var pair in table)
            {
                Console.WriteLine("{0} -> {1}", pair.Key, pair.Value);
            }

            string first;
            table.Find("first", out first);
            Console.WriteLine(first);

            table.Remove("second");
            Console.WriteLine(table.Count);
            foreach (var pair in table)
            {
                Console.WriteLine("{0} -> {1}", pair.Key, pair.Value);
            }

            Console.WriteLine(table["fourth"]);

            string[] keys = table.Keys;
            foreach (var key in keys)
            {
                Console.WriteLine(key);

            }

            table.Clear();
            Console.WriteLine(table.Count);
        }
Exemple #8
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Title           = "Хэш таблицы.html";
            //создается массив элементов размерности N = 56
            int NumberElements = 56;
            var array          = new int[NumberElements];
            var rnd            = new Random();

            //генерируются ключи размерности m = 5
            Console.WriteLine("Сгенерированные ключи:");
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = rnd.Next(10000, 100000);
            }
            OutArray(array, 1);


            int sizeTable = (int)Math.Round(NumberElements * 1.5);
            var hashTable = new MyHashTable(sizeTable, true);

            //var hashTable = new MyHashTable(sizeTable);

            Console.WriteLine();
            Console.WriteLine();

            //добавляем ключи в хэш таблицу
            for (int i = 0; i < array.Length; i++)
            {
                hashTable.Add(array[i]);
            }

            Console.WriteLine();

            Console.WriteLine("Коэффициент заполнения таблицы = {0:0.000}", hashTable.CoefOccupancy);
            Console.WriteLine("Среднее число проб = {0:0.000}", hashTable.AverageCountAttempt);

            Console.WriteLine();



            while (true)
            {
                Console.WriteLine("Хэш-таблица:");
                hashTable.PrintTable();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("Интерактивный режим");
                Console.WriteLine("1.Добавить ключ");
                Console.WriteLine("2.Найти индекс по ключу");
                Console.WriteLine("3.Удалить ключ");
                Console.WriteLine("4.Заменить один ключ другим");
                Console.WriteLine("5.Вывести параметры");
                Console.WriteLine("0.Выход");
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine();
                Console.Write("Выбор режима: ");
                var    mode = Console.ReadLine();
                int    key1, key2;
                string str;
                switch (mode[0])
                {
                case '1':
                    Console.WriteLine("1.Свой ключ");
                    Console.WriteLine("2.Диапазон случайных");
                    Console.WriteLine();
                    Console.Write("Выбор режима: ");
                    mode = Console.ReadLine();
                    switch (mode[0])
                    {
                    case '1':
                        Console.WriteLine();
                        Console.Write("Введите ключ = ");
                        str = Console.ReadLine();
                        if (!int.TryParse(str, out key1))
                        {
                            break;
                        }
                        if (hashTable.Add(key1))
                        {
                            NumberElements++;
                        }
                        Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                        Console.ReadKey();
                        break;

                    case '2':
                        Console.WriteLine();
                        Console.Write("Сколько ключей = ");
                        str = Console.ReadLine();
                        if (!int.TryParse(str, out key1) || key1 < 0)
                        {
                            break;
                        }
                        var rand = new Random();
                        for (int i = 0; i < key1; i++)
                        {
                            if (hashTable.Add(rand.Next(10000, 99999)))
                            {
                                NumberElements++;
                            }
                        }
                        Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                        Console.ReadKey();
                        break;
                    }

                    break;

                case '2':
                    Console.WriteLine();
                    Console.Write("Введите ключ = ");
                    str = Console.ReadLine();
                    if (!int.TryParse(str, out key1))
                    {
                        break;
                    }
                    hashTable.Find(key1);
                    Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                    Console.ReadKey();
                    break;

                case '3':
                    Console.Write("Введите ключ = ");
                    str = Console.ReadLine();
                    if (!int.TryParse(str, out key1))
                    {
                        break;
                    }
                    if (hashTable.Remove(key1))
                    {
                        NumberElements--;
                    }
                    Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                    Console.ReadKey();
                    break;

                case '4':
                    Console.WriteLine();
                    Console.Write("Введите ключ для замены = ");
                    str = Console.ReadLine();
                    if (!int.TryParse(str, out key1))
                    {
                        break;
                    }
                    Console.Write("Введите ключ чем заменить = ");
                    str = Console.ReadLine();
                    if (!int.TryParse(str, out key2))
                    {
                        break;
                    }
                    hashTable.Replace(key1, key2);
                    Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                    Console.ReadKey();
                    break;

                case '5':
                    Console.WriteLine();
                    Console.WriteLine("Коэффициент заполнения таблицы = {0:0.000}", hashTable.CoefOccupancy);
                    Console.WriteLine("Среднее число проб = {0:0.000}", hashTable.AverageCountAttempt);
                    Console.WriteLine("Нажмите любую клавишу, чтобы продолжить");
                    Console.ReadKey();
                    break;

                case '0':
                    return;

                default:
                    break;
                }
            }
        }