fy"> {(strcmp (Tree- gt; Number, Number) == 0)
{
* status=1; (key == 0)
* CountFreeBads=- (Tree- gt; CountFreeBads); if (Tree- gt; CountFreeBads == - 1) * CountFreeBads=++ (++ (Tree- gt; CountFreeBads)); ;
} _ numbers (Tree- gt; Left_Child, Number, status, CountFreeBads, key); _ numbers (Tree- gt; Right_Child, Number, status, CountFreeBads, key);
}
}
Hastable. h
/***************************************** *****
Робота з хеш-таблицею
функціональність: робота з інформацією про постояльців
****************************************** *****/
//структура елемента хеш-табліциNodeHash {passport [12]; fio [100]; birthdayyear; adress [300]; target [300]; NodeHash * next;
}; hash (char *);// Обчислення хеш-функцііadd_hash_element (struct NodeHash **, struct NodeHash *, int);// Додавання елемента в хеш-табліцуdel_hash_element (struct NodeHash **, char *, int);// Видалення елемента з хеш-табліциview_hash_elements (struct NodeHash **);// Перегляд всіх елементів хеш-табліциclear_hash_table (struct NodeHash **);// Очистка хеш-табліциfindfio_hash_table (struct NodeHash **, char *);// Пошук в хеш-таблиці по ФІОfindpassport_hash_table (struct NodeHash **, char *, struct element *);// Пошук в хеш-таблиці за паспортом і виведення результатів по таблиці і спіскуfind_repeats (struct NodeHash **, int, char *);// Пошук збігів номерів паспортів в таблиці при спробі додати нового постояльцаprintsk (char * ,.);
hashtable. cpp
# define _CRT_SECURE_NO_WARNINGS
# include lt; string. h gt;
# include lt; stdlib. h gt;
# include hashtable. h
# include registration. h
//-----------------------------------------
/* обчислення хеш-функції (метод поділу) */hash (char * passport)
{intpas, k=0; tmp [10]; (int i=0; i lt; 11; i ++) (i == 4) continue;
{tmp [k]=* (passport + i); ++;
}=atoi (tmp); (intpas% 97);
}
//-----------------------------------------
/* Додавання нового елемента в хеш таблицю. */add_hash_element (struct NodeHash ** hashtable, struct NodeHash * pv, int hashkey)
{((* (hashtable + hashkey)) - gt; birthdayyear == 0)//якщо по даному ключу елементів немає
{((* (hashtable + hashkey)) - gt; adress, pv- gt; adress);
(* (hashtable + hashkey)) - gt; birthdayyear=pv- gt; birthdayyear; ((* (hashtable + hashkey)) - gt; fio, pv- gt; fio); (( * (hashtable + hashkey)) - gt; passport, pv- gt; passport); ((* (hashtable + hashkey)) - gt; target, pv- gt; target);
(* (hashtable + hashkey)) - gt; next=0;
}//додаємо в початок списку
{* hashtableitem;=(* (hashtable + hashkey));
(* (hashtable + hashkey))=pv; gt; next=hashtableitem;
}
}
//-----------------------------------------
/* Видалення елемента з хеш-таблиці. */del_hash_element (struct NodeHash ** hashtable, char * passport, int hashkey)
{level=0; * p, * p1, * p2;=(* (hashtable + hashkey)); (p!=0)
{(strcmp (p- gt; passport, passport) == 0)//перевіряємо збіг заданого ключа і значення в таблиці
{((level == 0) amp; amp; (p- gt; next == 0))//перший і єдиний елемент
{((* (hashtable + hashkey)) - gt; adress, 0 );
(* (hashtable + hashkey)) - gt; birthdayyear=0; ((* (hashtable + hashkey)) - gt; fio, 0 );
(* (hashtable + hashkey)) - gt; next=0; ((* (hashtable + hashkey)) - gt; passport, 0000-000000 ); ((* (hashtable + hashkey)) - gt; target, 0 );
} if ((level!=0) amp; amp; (p- gt; next == 0))//останній елемент
{(p); - gt; next=0;
} if ((level == 0) amp; amp; (p- gt; next!=0))//перший елемент
{= p;=p- gt; next; (p2);
} if ((level!=0) amp; amp; (p- gt; next!=0))//в середині списку
{- gt; next=p- gt; next; (p);
} ( nУдаленіе завершено. ) ;;
}=p;=p- gt; next; ++;
} ( nПостояльца з таким пасп...