Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 6 С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.85 Mб
Скачать

1.1.6Поиск элемента в отсортированном списке

Процедура поиска элемента в отсортированном списке, реализованном в файле, имеет следующие параметры:

  1. Файловая переменная (по ссылке);

  2. Адрес первого элемента списка (по значению);

  3. Ключ поиска (по значению);

  4. Указатель (номер записи) на найденный и предыдущий к найденному (по ссылке, так как это результат выполнения процедуры);

  5. Признак того, найден реально элемент или нет (по ссылке и имеет тип bool);

Процедура получает Start списка и ключ поиска и возвращает номер записи, в которой хранится найденный элемент списка и номер записи, в которой хранится элемент, предыдущий к найденному.

Поскольку процедура имеет двойное назначение, т.е. может искать не только элемент, но и место вставки элемента, то она может вернуть адреса элементов списка, между которыми вставляется новый элемент с заданным ключом.

Результат поиска – найден элемент или не найден – находится в специальной переменной типа bool.

Данная процедура имеет такой же алгоритм, как и процедура поиска для «кучи», описанный в лабораторной работе №3.

Процедуру поиска элемента необходимо реализовать самостоятельно.

1.1.7Удаление элемента из отсортированного списка

Процедура удаления получает следующие параметры:

  1. Файловая переменная (по ссылке);

  2. Адрес первого элемента (по ссылке, так как при удалении первого элемента адрес начала списка уже будет изменен);

  3. Ключ удаляемого элемента.

При удалении элемента может использоваться процедура поиска, описанная в п.6.3.7.

Процедура удаления элемента из отсортированного списка использует процедуру освобождения физического места, описанную в п. 6.3.6.

Алгоритм процедуры удаления:

  1. Поиск элемента по ключу в списке;

  2. Извлечение элемента из списка (здесь выполняется проверка – удаляется первый элемент или нет, и в зависимости от этого выполняются действия по извлечению элемента из списка);

  3. Занесение свободной записи, оставшейся после удаления элемента, в список дыр с помощью вызова процедуры, описанной в пункте 6.3.6.

Процедура удаления элемента из отсортированного списка в файле должна быть реализована самостоятельно.

1.1.8Удаление списка

Если в файле находится один список, то можно удалить файл и заново выполнить инициализацию списка.

В случае, если в файле находятся параллельно несколько списков, а удалить необходимо только один из них, то, начиная с начала списка удаляются последовательно его элементы и заносятся в список дыр.

Процедуру удаления реализуйте самостоятельно.

    1. Создание проекта, который обеспечивает создание и обработку списка, расположенного в двоичном файле

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).