- •Лабораторная работа № 6 Реализация списка в двоичном файле
- •Лабораторная работа № 6 Реализация линейного списка в двоичном файле.
- •Теоретические сведения
- •Описание типов для списка, размещаемого в двоичном файле
- •Основные процедуры для реализации списка в двоичном файле
- •Вывод списка на экран;
- •Открытие файла для списка
- •1.1.1Инициализация списка
- •1.1.2Вывод списка на экран
- •1.1.3Поиск физического места для размещения нового элемента в файле
- •1.1.4Освобождение физического места в файле после удаления элемента из списка
- •1.1.5Добавление нового элемента в отсортированный список
- •1.1.6Поиск элемента в отсортированном списке
- •1.1.7Удаление элемента из отсортированного списка
- •1.1.12Реализации основного модуля проекта
- •Задания для выполнения проекта
- •Тестирование проекта
- •Содержание отчета
- •Контрольные вопросы и задания
1.1.6Поиск элемента в отсортированном списке
Процедура поиска элемента в отсортированном списке, реализованном в файле, имеет следующие параметры:
Файловая переменная (по ссылке);
Адрес первого элемента списка (по значению);
Ключ поиска (по значению);
Указатель (номер записи) на найденный и предыдущий к найденному (по ссылке, так как это результат выполнения процедуры);
Признак того, найден реально элемент или нет (по ссылке и имеет тип bool);
Процедура получает Start списка и ключ поиска и возвращает номер записи, в которой хранится найденный элемент списка и номер записи, в которой хранится элемент, предыдущий к найденному.
Поскольку процедура имеет двойное назначение, т.е. может искать не только элемент, но и место вставки элемента, то она может вернуть адреса элементов списка, между которыми вставляется новый элемент с заданным ключом.
Результат поиска – найден элемент или не найден – находится в специальной переменной типа bool.
Данная процедура имеет такой же алгоритм, как и процедура поиска для «кучи», описанный в лабораторной работе №3.
Процедуру поиска элемента необходимо реализовать самостоятельно.
1.1.7Удаление элемента из отсортированного списка
Процедура удаления получает следующие параметры:
Файловая переменная (по ссылке);
Адрес первого элемента (по ссылке, так как при удалении первого элемента адрес начала списка уже будет изменен);
Ключ удаляемого элемента.
При удалении элемента может использоваться процедура поиска, описанная в п.6.3.7.
Процедура удаления элемента из отсортированного списка использует процедуру освобождения физического места, описанную в п. 6.3.6.
Алгоритм процедуры удаления:
Поиск элемента по ключу в списке;
Извлечение элемента из списка (здесь выполняется проверка – удаляется первый элемент или нет, и в зависимости от этого выполняются действия по извлечению элемента из списка);
Занесение свободной записи, оставшейся после удаления элемента, в список дыр с помощью вызова процедуры, описанной в пункте 6.3.6.
Процедура удаления элемента из отсортированного списка в файле должна быть реализована самостоятельно.
1.1.8Удаление списка
Если в файле находится один список, то можно удалить файл и заново выполнить инициализацию списка.
В случае, если в файле находятся параллельно несколько списков, а удалить необходимо только один из них, то, начиная с начала списка удаляются последовательно его элементы и заносятся в список дыр.
Процедуру удаления реализуйте самостоятельно.
Создание проекта, который обеспечивает создание и обработку списка, расположенного в двоичном файле
1.1.9Задача, решаемая проектом
Задача состоит в следующем: Создать список студентов в двоичном файле, каждый элемент которого содержит следующую информацию: фамилия студент, средний бал. Обеспечить заполнение данных, вывод исходного списка на экран, а так же другие функции, позволяющие обрабатывать список в файле (смотреть пункт 6.3).
1.1.10Интерфейс проекта
Базовый интерфейс проекта представлен на рисунке 6.9. На рисунках 6.10 и 6.11 представлен пример консоли при удалении элемента.
Рисунок 6.9 – Интерфейс проекта (базовый)
Рисунок 6.10 – Список до удаления элемента
Рисунок 6.11 – Список после удаления элемента
1.1.11Описание типов для проекта
Проект имеет такую же структуру, как и в предыдущих лабораторных работах.
Содержимое модуля типов (файл types.h) представлено на рисунке 6.12.
Рисунок 6.12 – Содержимое модуля типов
На рисунке 6.13 представлен заголовочный файл с прототипами функций проекта.
Рисунок 6.13 – Заголовочный файл с прототипами функций проекта
При реализации файла функций functions.cpp необходимо выполнить такие подключения: #include<sys\stat.h> и #include<QFile>. Тексты функций приведены выше (смотреть п.6.3).
