Разработать модули для работы с однонаправленным и двунаправленным списками из элементов, попадающих в заданный диапазон и, возможно, упорядоченных заданным образом. Модули должны обеспечивать следующие возможности работы со списками:
На основе базовых операций со списками необходимо разработать следующие подпрограммы:
Разработать программу, к которой будут поочерёдно подключаться разработанные модули, при этом сама программа не должна меняться ни на один символ. Программа должна сделать следующее:
После каждого изменения выводить содержимое списка.
Имена файлов передаются через параметры программы.
Создать однонаправленный и двунаправленный списки из целых чисел в диапазоне от -20 до +60, упорядоченных по возрастанию абсолютной величины. Найти в списке элемент, кратный 5. Удалить из списка все элементы, кратные 5.
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
info | Информация для добавления в список | TInfo | составная переменная | |
Выходные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Выходные данные | list | Структура, содержащая указатели на первый и последний элемент списка. Указатели на первый и последний элемент списка должны быть равны nil | запись | составная переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | name | Имя файла | строка | простая переменная |
Выходные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Выходные данные | first | Указатель на первый элемент, удовлетворяющий условию | указатель | простая переменная |
last | Указатель на последний элемент, удовлетворяющий условию. Для однонаправленного списка всегда равен nil |
указатель | простая переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Выходные данные | list | Структура, содержащая указатели на первый и последний элемент списка | запись | составная переменная |
Целые и вещественные числа обязательно надо разделять либо пробелами, либо переводами строки. Символы либо надо разделять переводами строки – в этом случае следует использовать процедуру readln, либо не разделять ничем – в этом случае следует использовать процедуру read.
№ теста | Входные данные | Ожидаемые результаты | Смысл теста |
---|---|---|---|
1 | 0, 2, 3, -5, -7, 16 |
Первый элемент: 0 Последний элемент: -5 |
Есть элементы, удовлетворяющие условию. Первый элемент списка удовлетворяет условию. |
2 | 3, -5, 8, -12, 24, 39, 44 |
Первый элемент: -5 Последний элемент: -5 |
Есть элементы, удовлетворяющие условию. |
3 | 13, 9, 8, 24, -17 | Нет элементов, удовлетворяющих условию. | |
4 | -2, 3, 6, -13, 25, 33, 55 |
Первый элемент: 25 Последний элемент: 55 |
Есть элементы, удовлетворяющие условию. Последний элемент списка удовлетворяет условию. |
Для нахождения первого элемента просматриваем список сначала. Выходим из цикла при нахождении элемента, удовлетворяющего условию. Если такого элемента нет, присваиваем указателю значение nil. Для нахождения последнего элемента всё делается аналогично, только двунаправленный список просматривается с конца.
Для удаления элементов, удовлетворяющих условию, также просматриваем список, и, если текущий элемент удовлетворяет условию, удаляем. Не забывайте рассматривать случаи, когда удаляемый элемент первый, последний или единственный.