
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматизированного проектирования
отчет
по лабораторной работе №4
по дисциплине «Программирование»
Тема: «Сложно-структурированные списки:
иерархические списки. Операции над иерархическими списками»
Студентка гр. 3352 |
|
|
Преподаватель |
|
|
Санкт-Петербург
2024
Исходная формулировка
Сформировать список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2
Формальная постановка задачи
Дана константа N и два входных файла, из которых считывается информация в два иерархических списка L1 и L2 соответственно. Каждый элемент вертикального списка - это горизонтальный список, формирующийся из элементов, представляющих собой массивы символов длиной N.
Сравнение элементов двух иерархических списка происходит следующим образом: Первый элемент списка L1 сравнивается со всеми элементами списка L2, если находится одинаковый элемент, сравнение прерывается. Если элемент списка L1 ни разу не совпал с элементами списка L2, то этот элемент заносится в список L3. Далее сравниваем следующий (второй) элемент списка L1 с элементами L2. Если элемент подходит (то есть не совпал с элементами списка L2), то мы проверяем, есть ли такой элемент в списке L3. Если нет - добавляем. Список L3 формируется до тех пор, пока не закончится список L1.
Контрольный пример
L1 Hello world 1 Hello world 4 ?!.!?.?.!.??????? Today is 11th April Today is 12th April Nmnmb Nmnmb Hello world ?!.!?.?.!.??????? ?!.!?.?.!.??????? Today is 13th April |
L2 Hello world 1 Hello world 2 Hello world 3 ?!.!?.?.!.??????? Today is 11th April Today is 13th April |
L3 Hello world 4 Today is 12th April Nmnmb Hello world |
Пользовательские типы
Struct StrL |
||
Поля структуры |
Тип |
Назначение |
massiv |
char |
Массив символов |
len |
int |
Длина массива |
Struct ListNodeH |
||
Поля структуры |
Тип |
Назначение |
podstroka |
StrL |
Подстрока |
*next |
ListNodeH |
Указатель на следующий эдемент горизонтального списка |
Struct ListNodeV |
||
Поля структуры |
Тип |
Назначение |
f_H |
Formular |
Подстрока |
*next |
ListNodeH |
Указатель на следующий эдемент горизонтального списка |
ReadV |
bool |
Считывание горизонтального списка |
Print1 |
void |
Вывод горизонтального списка |
Struct FormularH |
||
Поля структуры |
Тип |
Назначение |
*head |
ListNodeH |
Указатель на головной элемент |
*cur |
ListNodeH |
Указатель на текущий элемент |
*last |
ListNodeH |
Указатель на последний элемент |
*prev |
ListNodeH |
Указатель на предыдущий элемент |
count |
int |
Количество элементов в горизонтальном списке |
Struct FormularV |
||
Поля структуры |
Тип |
Назначение |
*head |
ListNodeV |
Указатель на головной элемент |
*cur |
ListNodeV |
Указатель на текущий элемент |
*last |
ListNodeV |
Указатель на последний элемент |
*prev |
ListNodeV |
Указатель на предыдущий элемент |