&otherStack);
// Функция копирования. Создаёт копию стэка
otherStack и присваивает её this стэку.
Контрольные вопросы
5.
6.
7.
8.
9.
Что такое абстрактная структура данных?
Основное свойство структуры данных стэк?
Напишите алгоритм основных операций со стэком.
Какие способы реализации структуры данных стэк вы знаете?
Каков будет результат применения операций PUSH(S,4),
PUSH(S,1), PUSH(S,3), POP(S), PUSH(S,6), PUSH(S,4), PUSH(S,1),
PUSH(S,3), POP(S), POP(S) к пустому стэку, хранящемуся в
массиве S[1..6]? К тому же стэку, уже хранящему 2 элемента?
ПРАКТИЧЕСКИЕ ЗАДАНИЯ
Задание 1
Разработать консольное приложение, которое с помощью абстрактной
структуры данных СТЭК располагает элементы данного массива (вектора)
в обратном порядке (инвертирует). Тип данных элементов массива
выбрать произвольно. Приложение должно:
1. делать запрос на ввод размера и элементов создаваемого массива;
2. выводить в консоль исходный массив после его создания;
3. делать запросы на:
3.1. инвертирование исходного массива:
в случае «Да» выводить в консоль инвертированный массив;
3.2. изменение исходного массива:
в случае «Да» создавать новый массив и выводить его в
консоль;
3.3. выход из приложения
в случае «Да» выходить из приложения;
Задание 2
Разработать консольное приложение, которое с помощью абстрактной
структуры данных СТЭК проверяет соответствие открывающих и
75
закрывающих HTML-тэгов во фрагменте HTML кода, введённого с
клавиатуры. Приложение должно:
1. делать запрос на ввод HTML кода;
2. выводить в консоль:
в случае соответствия – сообщение об этом;
в случае несоответствия – сообщение об этом и тэг(и), для
которого нет пары;
3. делать запрос на выход из приложения.
Задание 3
Разработать консольное приложение, которое с помощью абстрактной
структуры данных СТЭК вычисляет арифметическое выражение,
записанное в постфиксной форме (postfix notation). Выражение может
содержать 4 основных действия, скобки и числа. Для распознавания чисел
их можно вводить сразу после определённого символа, например, #.
Приложение должно:
1. делать запрос на ввод выражения в постфиксной форме;
2. выводить в консоль:
введённое выражение и результат вычислений в случае
корректного ввода;
сообщение об ошибке и введённое выражение в случае
некорректного ввода;
3. делать запрос на выход из приложения.
Лабораторная работа №3
Цель работы: Изучение принципов организации и работы с
абстрактной структурой данных ОЧЕРЕДЬ в форме односвязного линейного
списка.
Очередь — структура данных, в которую можно добавлять элементы и
извлекать их, причём элемент, котрый был добавлен первым, извлекается
также первым (FIFO–First In First Out, первый пришёл первый ушёл).
Указатель front указывает на первый добавленный элемент, а rear – на
последний.
76
Графическая иллюстрация:
NULL
rear
47
38
23
front
11
Поддерживаемые операции
1.
2.
3.
4.
5.
6.
добавить элемент в очередь;
извлечь информационную часть «первого» элемента;
удалить «первого» элемент;
проверить на пустоту;
очистить очередь;
копировать очередь.
77
ДОБАВЛЕНИЕ ЭЛЕМЕНТОВ В ОЧЕРЕДЬ (метод enQueue())
Графическая иллюстрация:
1
NULL
newNode
81
NULL
rear
47
rear
newNode
2
NULL
81
47
38
38
23
23
front
11
front
11
3
newNode
rear
81
NULL
rear
4
NULL
81
47
47
…
…
front
11
front
11
78
УДАЛЕНИЕ ЭЛЕМЕНТОВ ИЗ ОЧЕРЕДИ (метод deQueue())
Графическая иллюстрация:
1
NULL
rear
47
2
NULL
rear
47
38
38
23
front
23
front
temp
11
temp
11
3
NULL
rear
47
38
front
23
79
Контрольные вопросы
1.
2.
3.
4.
5.
Что такое абстрактная структура данных?
Основное свойство структуры данных очередь?
Напишите алгоритм основных операций с очередью.
Какие способы реализации структуры данных очередь вы знаете?
Каковбудетрезультатпоследовательностиопераций
ENQUEUE(Q,4), DEQUEUE(Q), DEQUEUE(Q), ENQUEUE(Q,1),
ENQUEUE(Q,3), ENQUEUE(Q,6), DEQUEUE(Q), ENQUEUE(Q,8),
ENQUEUE(Q,11), ENQUEUE(Q,2), DEQUEUE(Q), DEQUEUE(Q) к
пустой очереди, хранящейся в массиве Q[1..6]? К той же очереди,
уже хранящей 2 элемента?
ПРАКТИЧЕСКИЕ ЗАДАНИЯ
Задание 1
Разработать консольное приложение, которое с помощью абстрактной
структуры данных ОЧЕРЕДЬ моделирует работу аэропорта (или другой
системы массового обслуживания) с одной взлётно-посадочной полосой,
которую в каждый момент времени (цикл for) может использовать только
один самолёт – для взлёта или посадки. Приложение должно:
1. сделать запрос на ввод данных для моделирования: