Реализация линейного списка в типизированном файле
Автор: Пользователь скрыл имя, 30 Марта 2013 в 21:12, лабораторная работа
Описание работы
Цели работы:
- Ознакомиться с особенностями создания и обработки списка в типизированном файле;
- Создать проект в системе Delphi7, в котором реализованы основные операции обработки списка в типизированном файле.
Различные динамические структуры данных можно размещать не только в динамической памяти, но и в двоичных или текстовых файлах.
В данной лабораторной работе рассматривается размещение однонаправленного связанного списка в типизированном файле.
Работа содержит 1 файл
Лаб5_СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ.doc
— 247.50 Кб (Скачать)Рисунок 5.8 – Процедура добавления нового элемента в упорядоченный список в файле
Поиск элемента в отсортированном списке
Процедура поиска элемента в отсортированном списке, реализованном в файле имеет следующие параметры:
- Файловая переменная (по ссылке);
- Адрес первого элемента списка (по значению);
- Ключ поиска (по значению);
- Указатель (номер записи) на найденный и предыжущий к найденному (по ссылке, так как это результат выполнения процедуры);
- Признак того, найден реально элемент или нет (по ссылке и имеет тип Boolean);
Процедура получает Старт списка и ключ поиска и возвращает номер записи, в которой хранится найденный элемент списка и номер записи, в которой хранится элемент, предыдущий к найденному.
Поскольку процедура имеет двойное назначение, т.е. может искать не только элемент, но и место вставки элемента, то она может вернуть адреса элементов списка, между которыми вставляется новый элемент с заданным ключом.
Результат поиска – найден элемент или не найден находится в специальной переменной типа Boolean.
Данная процедура имеет такой же алгоритм, как и процедура поиска для «кучи», описанный в лабораторной работе №2.
Процедуру поиска элемента необходимо реализовать самостоятельно.
Удаление элемента из отсортированного списка
Процедура удаления получает следующие параметры:
- Файловая переменная (по ссылке);
- Адрес первого элемента (по ссылке, так как при удалении первого элемента адрес начала списка уже будет изменен);
- Ключ удаляемого элемента.
При удаленнии элемента может использоваться процедура поиска, описанная в п.5.3.7.
Процедура удаления элемента из отсортированного списка использует процедуру освобождения физического места, описанную в п. 5.3.5.
Алгоритм процедуры удаления:
- Поиск элемента по ключу в списке;
- Извлечение элемента из списка (здесь выполняется проверка – удаляется первый элемент или нет, и в зависимости от этого выполняются действия по извлечению элемента из списка);
- Знесение свободной записи, оставшейся после удаления элемента в список дыр с помощью вызова процедуры, описанной в пункте 5.3.5.
Процедура удаления элемента из отсортированного списка в файле должна быть реализована самостоятельно.
Удаление списка
Если в файле находится один список, то можно удалить файл и заново выполнить инииализацию списка.
В случае, если в файле находятся параллельно несколько списков, а удалить необходимо только один из них, то, начиная с начала списка удаляются последовательно его элементы и заносятся в список дыр.
Процедуру удаления реализуйте самстоятельно.
Создание проекта, который обеспечивает создание и обработку списка, расположенного в типизированном файле
Задача, решаемая проектом
Задача состоит в следующем: Создать список студентов в типизированном файле, каждый элемент которого содержит следующую информацию: фамилия студент, средний бал. Обеспечить заполнение данных о каждом студенте путем нажатия на кнопку «Добавить» и вызове дополнительной формы для ввода данных. Вывод исходного списка произвести в компонент ListBox.
Интерфейс проекта
Главная форма проекта представлена на рисунке 5.9. Для вывода подсписоков мультисписка используются компоненты ListBox.
Рисунок 5.9 – Изображение главной формы проекта
Описание типов для проекта
Проект имеет такую же структуру, как и во 2-й лабораторной работе.
Содержимое модуля типов представлено на рисунке 5.10.
Рисунок 5.10 – Содержимое модуля типов
Реализации операции добавления нового элемента в упорядоченный список в файле
Процедура, обрабатывающая событие нажатие на кнопку «Добавить» на дополнительной форме ввода, показана на рисунке 5.11.
Рисунок 5.11 – Процедура, обрабатывающая событие нажатия на кнопку «Добавить» на форме ввода данных
5.5 Задания для выполнения проекта
Создайте проект, который выполняет обработку списка элементов, а именно производит добавление элемента в список, расположенный в типизированном файле, как это показано в п.5.3.
Дополните существующий проект возможностью удаления элемента по ключу из списка.
Реализуйте задачи со списком в типизированном файле согласно варианта, приведенного в таблице 5.2. При необходимости добавьте недостающие визуальные компоненты на форму. Содержимое списка также указано в таблице 5.2 согласно варианта задания.
Таблица 5.2 – Задания для выполнения проекта
Вариант |
Содержимое элемента Списка |
Реализовать операцию со списком: |
0 |
Целое число |
2.Удалить из списка все четные элементы |
1 |
- номер аудитории - кафедра -количество компьютеров |
1. Реализовать операцию сохранения и восстановления списка из типизированного файла 2. Создать второй список, в котором
будут только записи об |
2 |
- фамилия спортсмена - разряд - вид спорта |
1. Реализовать операцию удаления элемента с дубликатами из отсортированного списка 2. Удалить спортсменов, которые занимаются плаваньем |
3 |
- название книги - цена - тираж |
1. Реализовать операцию слияния двух отсортированных списков 2. Удалить книги, перед |
4 |
- название блюда - количество калорий - страна |
1.Реализовать операцию 2. Удалить записи о тех блюдах, перед которыми находится блюдо страны Испания |
5 |
- название магазина - количество рботников |
1. Реализовать операцию удаления элемента и его дубликатов из неупорядоченного списка 2. Создать второй список, в котором будет хранится информация о магазинах, где количество работников меньше 30 |
6 |
Целое число |
1.Реализовать операцию создания копии списка 2. Перед каждым элементом, равным 0, вставить в список новый элемент со значением 2. |
7 |
Строка |
1.Реализовать операцию 2. После каждой строки, которая имеет длину больше 3-х символов, вставить элемент со строкой «***» |
8 |
- номер школы - директор - количество учителей |
1.Реализовать операцию 2. Удалить информацию из списка о тех школах, где количество учителей меньше 40 |
9 |
Целое число |
1.Реализовать операцию 2.После каждого четного |
5.6 Тестирование проекта
Выполните тестирование проекта следующим образом:
- В таблице разместите значения элементов, добавленных в список.
- Выполните задание 1, согласно варианта, вручную и изобразите его результат в отчете;
- Выполните задание 1 при помощи проекта и изображение интерфейса с результатом выполнения поместите в отчет.
- Аналогично выполните тестирование второго задания.
Содержание отчета
1. Наименование работы.
2. Цель работы.
3. Изображение интерфейса проекта, реализованного согласно задания.
4. Текст программы.
5. Результаты тестирования проекта.
6. Выводы о результатах тестирования проекта и об особенностях реализации списковой структуры в типизированном файле.
Контрольные вопросы и задания
- Знать алгоритм и уметь написать любую из описанных в данной работе процедур обработки списка;
- Рассказать об основных особенностях реализации списка в типизированном файле;
- В чем состоит инициализация списка в типизированном файле.
- Какие дополнительные процедуры необходимо реализовать при создании и обработке списка в файле по сравнению с обработкой списка в «куче»;
- Что содержит поле Next каждого элемента списка в файле.
- Что такое «дыра»?
- Как организованы «дыры» в файле;
- Как узнать адрес первого элемента списка, если он реализован в типизированном файле?
- Где может размещаться новый элемент в файле?
- Опишите алгоритм процедуры поиска свободного места в типизированном файле для нового элемента списка.