Beispiel #1
0
        //добавление элемента
        public void Add(hashItem _item)
        {
            bool ok  = true;
            int  key = _item.getNumber(); //запоминаем ключ (таб. номер)
            int  hF  = hashFunction1(key);

            if (!isFull())                                            //если таблица не полная, то пытаемся добавить
            {
                while (table[hF].getStatus() == Status.engaged && ok) //если по первому хешу уже что-то лежит, применяем второй, пока не дойдем до пустой ячейки или конца таблицы
                {
                    ok = table[hF].getNumber() != key;                //
                    hF = (hF + hashFunction2(key)) % size;
                }
                if (table[hF].getStatus() != Status.engaged && ok)    //если статуc ячейки == не занята или удалена, то добавляем элемент
                {
                    table[hF].setEngaged();
                    table[hF].setInfo(_item);
                    ++count;
                }
                else
                {
                    Console.WriteLine("Warning: user numbers can not be equal.");
                }
            }
            //иначе оповещаем юзера о невозможности добавления
            else
            {
                Console.WriteLine("Warning: unable to add user record. The table is full.");
            }
        }
Beispiel #2
0
 //перегрузка, копирование другого hashItem'а
 public void setInfo(hashItem _item)
 {
     setEngaged();
     setNumber(_item.getNumber());
     setNSP(_item.getNSP());
     setPayment(_item.getPayment());
 }