 
        
        МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматизированного проектирования
отчет
по лабораторной работе №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 | Указатель на предыдущий элемент | 
 
