Exemplo n.º 1
0
 //функция для перехода к концу списка
 public void reverseEnd()
 {
     while (hash.Next != null)
     {
         hash = hash.Next;
     }
 }
Exemplo n.º 2
0
 //функция для перехода к началу списка
 public void reverseBegin()
 {
     while (hash.Back != null)
     {
         hash = hash.Back;
     }
     if (hash.Back != null && hash.Next != null)
     {
         hash = hash.Next;
     }
 }
Exemplo n.º 3
0
 //метод поиска по ключу
 public HashList searchKey(string key)
 {
     /* Этот метод волшебный, и он
      * гарантированно возвращает целый список
      * И при вызове метода
      * нужно всего лишь проверить совпадают ли ключи
      */
     reverseBegin();
     while (hash.Next != null)
     {
         if (hash.key == key)
         {
             return(hash);
         }
         hash = hash.Next;
     }
     return(hash);
 }
Exemplo n.º 4
0
 //метод удаления элемента из списка
 public void delete(string key)
 {
     /* Если элемент списка не является последним
      * то вырезаем его путём создания буферной переменной
      * иначе просто удаляем ссылки на этот последний элемент
      */
     searchKey(key);
     if (hash.Next != null && hash.Back != null)
     {
         HashList local = hash.Next;
         local.Back     = hash.Back;
         hash.Back.Next = local;
         hash           = local;
     }
     else
     if (hash.Next == null)
     {
         hash.Back.Next = null;
     }
 }
Exemplo n.º 5
0
 //функция добавление нового слова
 public void add(string key, string text)
 {
     /* Уходим в начало списка.
      * Если при проверочном поиске нашли ключ то делаем перезапись.
      * Иначе переходим в конец списка.
      * И производим запись.
      */
     reverseBegin();
     if (searchKey(key).key == key)
     {
         hash.key  = key;
         hash.text = text;
     }
     else
     {
         reverseEnd();
         HashList local = new HashList(key, text);
         local.Back = hash;
         hash.Next  = local;
         hash       = local;
     }
 }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            int  n    = 0;
            bool flag = false;

            while (!flag)
            {
                try
                {
                    Console.Write("Введите размер хеш таблицы:");
                    n    = Math.Abs(Convert.ToInt32(Console.ReadLine()));
                    flag = true;
                }
                catch
                {
                    Console.WriteLine("Не верный ввод. Повторите попытку.");
                    flag = false;
                }
            }
            MyList[] table = new MyList[n];
            for (int i = 0; i < table.Length; i++)
            {
                table[i] = new MyList();
            }
            command();
            while (true)
            {
                Console.Write("Введите команду:");
                string consoleCommand = Convert.ToString(Console.ReadLine());

                if (consoleCommand == "поиск")
                {
                    Console.Write("Введите ключевое слово для поиска:");
                    string   key  = Convert.ToString(Console.ReadLine());
                    HashList item = table[hashGeneration(key, n)].searchKey(key);
                    if (item.key == key)
                    {
                        Console.WriteLine("key:" + item.key);
                        Console.WriteLine("text:" + item.text);
                    }
                    else
                    {
                        Console.WriteLine("По запросу ничего не найдено.");
                    }
                }
                else
                if (consoleCommand == "вставка")
                {
                    Console.Write("Введите ключевое слово для записи:");
                    string key = Convert.ToString(Console.ReadLine());
                    Console.Write("Введите сопроводительный текст:");
                    string text = Convert.ToString(Console.ReadLine());
                    table[hashGeneration(key, n)].add(key, text);
                    Console.WriteLine("Запись выполнена успешно.");
                }
                else
                if (consoleCommand == "удаление")
                {
                    Console.Write("Введите ключевое слово для удаления:");
                    string key = Convert.ToString(Console.ReadLine());
                    MyList ho  = new MyList();

                    try
                    {
                        table[hashGeneration(key, n)].delete(key);
                        Console.WriteLine("Удаление выполнено успешно.");
                    }
                    catch
                    {
                        Console.WriteLine("Данный ключ не существует.");
                    }
                }
                else
                if (consoleCommand == "выход")
                {
                    break;
                }
                else
                {
                    Console.WriteLine("не верная команда. Повторите ввод.");
                }
            }
            Console.Write("нажмите любую кнопку для закрытия...");
            Console.ReadKey();
        }
Exemplo n.º 7
0
 public MyList()
 {
     hash = new HashList();
 }