ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Для хранения телефонной книги будем использовать хэш-таблицу из
26 групп (по количеству букв латинского алфавита). Ключевым
значением поиска будет являться имя абонента. Хэш-функция будет
определять номер группы по первой букве этого имени.
Данная хэш-функция является простой, однако она не обеспечивает
равномерного распределения информации по группам: некоторые буквы
гораздо чаще встречаются в именах, чем другие.
При реализации хэш-таблицы хранение каждой группы будем
осуществлять в виде односвязного списка, а сама хэш-таблица будет
представлять собой массив этих списков. Таким образом, приложение
«Телефонная книга» содержит четыре класса:
• класс информации об абоненте (Info);
• класс одного элемента списка (Element);
• класс списка для хранения группы хэш-таблицы (List);
• класс для хранения хэш-таблицы (HashTable).
Приведем объявления этих классов:
// предварительное объявление классов
class List;
class HashTable;
// класс информации об абоненте
class Info
{
private:
char fio[50]; // имя абонента
char phone[20]; // номер телефона
public:
// конструктор с инициализацией данных об абоненте
Info(char*, char*);
// конструктор по умолчанию
Info();
// конструктор копирования
Info(const Info&);
// методы получения и установки имени абонента
char* GetFIO();
void SetFIO(char*);
// методы получения и установки номера телефона
char* GetPhone();
void SetPhone(char*);
// дружественные классы и функции
friend class List;
friend ostream& operator << (ostream&, Info&);
friend ostream& operator << (ostream&, List&);
180
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Для хранения телефонной книги будем использовать хэш-таблицу из
26 групп (по количеству букв латинского алфавита). Ключевым
значением поиска будет являться имя абонента. Хэш-функция будет
определять номер группы по первой букве этого имени.
Данная хэш-функция является простой, однако она не обеспечивает
равномерного распределения информации по группам: некоторые буквы
гораздо чаще встречаются в именах, чем другие.
При реализации хэш-таблицы хранение каждой группы будем
осуществлять в виде односвязного списка, а сама хэш-таблица будет
представлять собой массив этих списков. Таким образом, приложение
«Телефонная книга» содержит четыре класса:
• класс информации об абоненте (Info);
• класс одного элемента списка (Element);
• класс списка для хранения группы хэш-таблицы (List);
• класс для хранения хэш-таблицы (HashTable).
Приведем объявления этих классов:
// предварительное объявление классов
class List;
class HashTable;
// класс информации об абоненте
class Info
{
private:
char fio[50]; // имя абонента
char phone[20]; // номер телефона
public:
// конструктор с инициализацией данных об абоненте
Info(char*, char*);
// конструктор по умолчанию
Info();
// конструктор копирования
Info(const Info&);
// методы получения и установки имени абонента
char* GetFIO();
void SetFIO(char*);
// методы получения и установки номера телефона
char* GetPhone();
void SetPhone(char*);
// дружественные классы и функции
friend class List;
friend ostream& operator << (ostream&, Info&);
friend ostream& operator << (ostream&, List&);
180
Страницы
- « первая
- ‹ предыдущая
- …
- 178
- 179
- 180
- 181
- 182
- …
- следующая ›
- последняя »
