Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 93 стр.

UptoLike

92
записей о контактах (имя абонента и его телефон). Основной функцией
приложения является поиск телефона нужного абонента.
Для хранения информации о контактах телефонной книги реализуем
собственную хэш-таблицу, элементами которой будут являться «страницы»
телефонной книги.
В самом простом случае все данные, которые хранятся в хэш-таблице,
разбиваются на определенное количество групп, для хранения каждой из
которых используется отдельная область памяти. Определение номера
группы, в которую должны быть помещены данные, происходит по значению
некоторого ключевого поля с помощью специальной хэш-функции.
Поскольку хэш-функция однозначно определяет номер группы, в которую
попадает конкретная запись, при ее последующем поиске значительно
сокращается количество просматриваемых данных (достаточно просмотреть
только одну группу хэш-таблицы). Для эффективного поиска желательно
подбирать хэш-функцию таким образом, чтобы обеспечить равномерное
заполнение всех групп.
Для хранения телефонной книги будем использовать хэш-таблицу из 33
групп (по количеству букв русского алфавита). Ключевым значением поиска
будет являться имя абонента. Хэш-функция будет определять номер группы
по первой букве этого имени. Таким образом, как и в бумажных телефонных
книгах, записи будут сгруппированы по начальным буквам имен абонентов.
Данная хэш-функция является простой, однако она не обеспечивает
равномерного распределения информации по группам: некоторые буквы
гораздо чаще встречаются в именах, чем другие.
При реализации хэш-таблицы хранение каждой группы будем
осуществлять в виде односвязного списка, а сама хэш-таблица будет
представлять собой словарь из этих списков с ключом буквой. Таким
образом, приложение «Телефонная книга» содержит два класса:
класс информации об абоненте (Info);
класс для хранения хэш-таблицы (PhoneBook).
Приведем код класса информации об абоненте:
class Info
{
string fio; // имя абонента
string phone; // номер телефона
// конструктор с инициализацией данных об абоненте
public Info(string f, string p)
{
fio = f;
записей о контактах (имя абонента и его телефон). Основной функцией
приложения является поиск телефона нужного абонента.
     Для хранения информации о контактах телефонной книги реализуем
собственную хэш-таблицу, элементами которой будут являться «страницы»
телефонной книги.
     В самом простом случае все данные, которые хранятся в хэш-таблице,
разбиваются на определенное количество групп, для хранения каждой из
которых используется отдельная область памяти. Определение номера
группы, в которую должны быть помещены данные, происходит по значению
некоторого ключевого поля с помощью специальной хэш-функции.
Поскольку хэш-функция однозначно определяет номер группы, в которую
попадает конкретная запись, при ее последующем поиске значительно
сокращается количество просматриваемых данных (достаточно просмотреть
только одну группу хэш-таблицы). Для эффективного поиска желательно
подбирать хэш-функцию таким образом, чтобы обеспечить равномерное
заполнение всех групп.
     Для хранения телефонной книги будем использовать хэш-таблицу из 33
групп (по количеству букв русского алфавита). Ключевым значением поиска
будет являться имя абонента. Хэш-функция будет определять номер группы
по первой букве этого имени. Таким образом, как и в бумажных телефонных
книгах, записи будут сгруппированы по начальным буквам имен абонентов.
     Данная хэш-функция является простой, однако она не обеспечивает
равномерного распределения информации по группам: некоторые буквы
гораздо чаще встречаются в именах, чем другие.
     При реализации хэш-таблицы хранение каждой группы будем
осуществлять в виде односвязного списка, а сама хэш-таблица будет
представлять собой словарь из этих списков с ключом – буквой. Таким
образом, приложение «Телефонная книга» содержит два класса:
        класс информации об абоненте (Info);
        класс для хранения хэш-таблицы (PhoneBook).
     Приведем код класса информации об абоненте:

   class Info
   {
      string fio;         // имя абонента
      string phone;       // номер телефона

      // конструктор с инициализацией данных об абоненте
      public Info(string f, string p)
      {
         fio = f;

                                                                     92