//добавление элемента 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."); } }
//перегрузка, копирование другого hashItem'а public void setInfo(hashItem _item) { setEngaged(); setNumber(_item.getNumber()); setNSP(_item.getNSP()); setPayment(_item.getPayment()); }