Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба 2

.pdf
Скачиваний:
2
Добавлен:
18.02.2023
Размер:
615.6 Кб
Скачать

Лабораторная работа №2

«Стек, Дек, Очередь» Задание на лабораторную работу:

Решить три задачи, оформить отчет (титульный лист, код программы с комментариями, результат в виде скринов работы программы), подготовиться к защите (беседа с преподавателем по коду программы)

Условие задачи1 Дек

Реализуйте структуру данных «дек». Напишите программу, содержащую описание дека и моделирующую работу дека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push_front

Добавить (положить) в началоовый элементдка. Программа должна вывестиok.

push_back

Добавить (положить) в конец дека новый элемент. Программаok.

pop_front

Извлечь из дека первый элемент. Программа должна вывести

pop_back

Извлечь из дека последнийПрограммаэлемент.должна вывести его знач

front

Узнать значение первого элемента (не удаляя его). Програм его значение.

back

Узнать значение последнего элемента (не удаляя его). Прог вывести его значение.

size

Вывести количествоэлементов в деке.

clear

Очистить дек (удалить из него все элементы)ok. и вывести

Exit

Программа должна вBYEывестизавершить работу.

Размер дека должен быть ограничен только размер оперативной памяти.

Перед исполнением операцийpop front, pop_back, front, back программа должна проверять, содержится ли в деке хотя бы один элем данных встречается операцияpop front, pop_back, front, back, и при этом дек п то программа должна вместо числового значенияerror. вывести стр

Условие задачи2 Стек

Дана конечная последовательность, состоящая из левых различных заданных типов. Как определить, можно ли доба знаки арифметических действий так, чтобы получило арифметическоевыражение.

Тесты

Входные данные

Выходные данные

 

 

 

1

(

NO

 

 

 

2

))

NO

 

 

 

3

[}

NO

 

 

 

4

{}

YES

 

 

 

5

(){}[]

YES

 

 

 

6

({[]}{})

YES

 

 

 

7

[({}())[]

NO

 

 

 

 

 

 

Решение

Арифметическое выражение правильнымявляется, если каждой открывающей скобке соответствует единственная за бы убедится в правильности выражения необхо структуруstack, в которую поочередно записываются от скобки. Если встречается закрывающая скобкато итог последняя открывающая, то они обе удаляются, так правильность выражения.

Если жезакрывающая скобка не соответствует тип открывающей, то такое арифметическое выражение правильным. Если после обработкиедовательностивсей посл в ст не осталось элементов, то такое выражение являет случае отсутствия скобок выражение также правильн

Условие задачи 3 Очередь

Имеетсяn черных и белых карточек, сложенных Карточки раскладываются наоднустоллинию следующим первая кладется на стол,—подвтораяниз стопки,— третьяна четвертая— под низ стопки и т.д., пока все выложены на стол. Каким должно быть исходное карточек в стопке, чтобы разложенныенастоле чередовались по цвету: белая, черная, белая,

 

 

 

Тестирование

 

Входные данные

 

Выходные данные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

 

01

 

 

 

 

 

 

 

 

3

5

 

10011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

12

 

101100010011

 

 

 

 

 

 

 

 

5

20

 

00111001101100010011

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь нули — черные карточки, единицы — белые, а первый символ строки обозначает карточку, лежащую внизу стопки.

Возможный вариант решения задачи (можно предложить свой вариант, если придумаете)

Алгоритм разбора стопки можно описать следующим образом

1.Выкладываем на стол верхнюю карточку.

2.Пока в стопке есть карты, выполняем действия:

A.перекладываем под низ стопки верхнюю карточку;

B.выкладываем на стол верхнюю карточку.

Поэтому для построения стопки нам достаточно обрати (выкладывание на стол заменить добавлением в стопку, верхней карточки под низ—перекладываниемстопки нижней на ее в выполнятьих в обратном порядке. Тогда алгоритм построения б

1.Пока на столе не останется одна карточка, выполняем действия:

A.добавляем карточку, выложенную на стол последней из имеющихся, на верх стопки;

B.перекладываем карточку из-под стопки наверх.

2.Добавляем карточку наверх.

Так как карточки на столе считаем разложенными в нужном то есть чередующимися по цвету начиная с белой карточки, очередная добавляемая карточка будет менять цвет относит причем последняя добавляемая будет белой.

Для решения задачи удобнее всего будет воспользоваться при построении стопки мы добавляем карточки только в один при перекладывании всегда из противоположного.

Более того,данномв случае структуру можно значительно обл из методов толькоpush() иpop(), причем из последнего можно за нен удалить проверку исключительной ситуации при попытке и пустой стопки, так как по алгоритмупередизъятиемпрямо всегда выполн добавление карточки. Карточки могут быть только двух ц очереди будут хранить значенияbool. типа

Соседние файлы в предмете Структуры и алгоритмы обработки данных