Дек с защитой от ошибок
Реализуйте структуру данных "дек". Напишите программу, содержащую описание дека и моделирующую работу дека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:
- push_front
- Добавить (положить) в начало дека новый элемент. Программа должна вывести
ok
. - push_back
- Добавить (положить) в конец дека новый элемент. Программа должна вывести
ok
. - pop_front
- Извлечь из дека первый элемент. Программа должна вывести его значение.
- pop_back
- Извлечь из дека последний элемент. Программа должна вывести его значение.
- front
- Узнать значение первого элемента (не удаляя его). Программа должна вывести его значение.
- back
- Узнать значение последнего элемента (не удаляя его). Программа должна вывести его значение.
- size
- Вывести количество элементов в деке.
- clear
- Очистить дек (удалить из него все элементы) и вывести
ok
. - exit
- Программа должна вывести
bye
и завершить работу.
Гарантируется, что количество элементов в деке в любой момент не превосходит 100. Перед исполнением операций pop_front
, pop_back
, front
, back
программа должна проверять, содержится ли в деке хотя бы один элемент. Если во входных данных встречается операция pop_front
, pop_back
, front
, back
, и при этом дек пуст, то программа должна вместо числового значения вывести строку error
.
Запрещается использовать стандартный стек, а также стандартные динамические массивы с функциями типа append/push_back. Пишите на массиве фиксированной длины, с индексами-указателями.
Вводятся команды управления деком, по одной на строке. Общее количество операций не превосходит миллиона.
Требуется вывести протокол работы дека, по одному сообщению на строке
push_back 1 back exit
ok 1 bye
size push_back 1 size push_back 2 size push_front 3 size exit
0 ok 1 ok 2 ok 3 bye