Учебное пособие C#. Алгоритмы и структуры данных н. А. Тюкачев, В. Г. Хлебостроев издание третье, стереотипное 1 / 23


Листинг 2.19. Добавление элемента в хеш-таблицу


Download 1.85 Mb.
Pdf ko'rish
bet29/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   25   26   27   28   29   30   31   32   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 2.19. Добавление элемента в хеш-таблицу 
public int AddHash(string fio, string phone) 

int adr = -1; 
if (size < sizeTable)

adr = hashKey(phone); // 
таблица не перепол-
нена 
15 / 23


39 
while (!h[adr].empty) 
adr = (adr + step) % sizeTable; 
// 
место свободно - можно ставить эле-
мент 
h[adr].empty = false; //
признак занятости 
h[adr].visit = true; //
признак посещенности 
h[adr].info.fio = fio; 
h[adr].info.phone 

phone; 
size++; //
количество элементов увеличилось 

return adr; 

Для поиска элемента в хеш-таблице используется метод FindHash
представленный в листинге 2.20. 
Листинг 2.20. Поиск элемента в хеш-таблице 
public int FindHash(string phone,
out string fio, out int count) // 
по-
иск в хеш-таблице 

int result = -1; 
bool ok; 
fio = ""; 
count = 1; 
ClearVisit(); 
int i = hashKey(phone); 
ok = h[i].info.phone == phone; 
while (!ok && !h[i].visit) 

count++; 
h[i].visit = true; 
i = (i + step) % sizeTable; // 
продолжаем по-
иск 
ok = h[i].info.phone == phone; 

16 / 23


40 
if (ok) 

result = i; 
fio = h[result].info.fio; 

return result; 

Если элемент найден, то значение функции равно индексу, иначе –1. 
Дополнительная информация о найденном элементе передается параметром 
fio
, параметр count возвращает число шагов. 
Функция удаления элемента – булевская. Если элемент был найден в 
таблице и, следовательно, удален, то ее значение равно true, если элемента 
в таблице не было – не было и удаления, значение функции – false. Алго-
ритм приведен в листинге 2.21. 

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   111




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling