|
| 1 | +# Стеки, Очереди, Деки (C++) |
| 2 | + |
| 3 | +## Стек |
| 4 | + |
| 5 | +### Определение |
| 6 | + |
| 7 | +Стеком (англ. stack) называется хранилище данных, в котором можно работать только с одним элементом: тем, который был добавлен в стек последним. Стек должен поддерживать следующие операции: |
| 8 | + |
| 9 | +- `push`: Добавить (положить) в конец стека новый элемент. |
| 10 | +- `pop`: Извлечь из стека последний элемент. |
| 11 | +- `back`: Узнать значение последнего элемента (не удаляя его). |
| 12 | +- `size`: Узнать количество элементов в стеке. |
| 13 | +- `clear`: Очистить стек (удалить из него все элементы). |
| 14 | + |
| 15 | +### Структура данных Stack |
| 16 | + |
| 17 | +- stack(); // Конструктор |
| 18 | +- ~stack(); // Деструктор |
| 19 | +- void push(int d); // Добавить в стек новый элемент |
| 20 | +- int pop(); // Удалить из стека последний элемент и вернуть его значение |
| 21 | +- int back(); // Вернуть значение последнего элемента |
| 22 | +- int size(); // Вернуть количество элементов в стеке |
| 23 | +- void clear(); // Очистить стек |
| 24 | + |
| 25 | + |
| 26 | +## Очередь |
| 27 | + |
| 28 | +### Определение |
| 29 | + |
| 30 | +Очередью (англ. queue) называется структура данных, в которой элементы кладутся в конец, а извлекаются из начала. Первым из очереди будет извлечен тот элемент, который будет добавлен раньше других. |
| 31 | + |
| 32 | +### Структура данных Queue |
| 33 | + |
| 34 | +- queue(); // Конструктор |
| 35 | +- ~queue(); // Деструктор |
| 36 | +- void push(int d); // Добавить в очередь новый элемент |
| 37 | +- int pop(); // Удалить из очереди первый элемент и вернуть его значение |
| 38 | +- int front(); // Вернуть значение первого элемента |
| 39 | +- int size(); // Вернуть количество элементов в очереди |
| 40 | +- void clear(); // Очистить очередь |
| 41 | + |
| 42 | +## Дек |
| 43 | + |
| 44 | +### Определение |
| 45 | + |
| 46 | +Деком (англ. deque – аббревиатура от double-ended queue, двухсторонняя очередь) называется структура данных, в которую можно удалять и добавлять элементы как в начало, так и в конец. |
| 47 | + |
| 48 | +### Структура данных Deque |
| 49 | + |
| 50 | +- push_front Добавить (положить) в начало дека новый элемент |
| 51 | +- push_back Добавить (положить) в конец дека новый элемент |
| 52 | +- pop_front Извлечь из дека первый элемент |
| 53 | +- pop_back Извлечь из дека последний элемент |
| 54 | +- front Узнать значение первого элемента (не удаляя его) |
| 55 | +- back Узнать значение последнего элемента (не удаляя его) |
| 56 | +- size Узнать количество элементов в деке |
| 57 | +- clear Очистить дек (удалить из него все элементы) |
| 58 | + |
| 59 | + |
| 60 | +## Упражнения |
| 61 | + |
| 62 | +### Упражнение A - Простой стек |
| 63 | + |
| 64 | +- Реализуйте структуру данных "стек", реализовав все указанные методы. |
| 65 | +- Напишите программу (функцию main), содержащую описание стека и моделирующую работу стека. |
| 66 | + |
| 67 | +### Упражнение B - Стек с обработкой ошибок |
| 68 | + |
| 69 | +- Аналогично предыдущему заданию, только снимается ограничение на корректность вызовов методов back и pop. |
| 70 | + |
| 71 | +### Упражнение C - Стек без ограничения на размер |
| 72 | + |
| 73 | +- Реализуйте стек динамического размера, то есть ограниченный только объемом свободной оперативной памяти. |
| 74 | + |
| 75 | +### Упражнение D - Простая очередь |
| 76 | + |
| 77 | +- Реализуйте простейшую очередь, размер которой не превосходит 100 элементов. |
| 78 | + |
| 79 | +### Упражнение E - Очередь с обработкой ошибок |
| 80 | + |
| 81 | +- Аналогично заданию B, но для очереди. |
| 82 | + |
| 83 | +### Упражнение F - Очередь без ограничений на размер |
| 84 | + |
| 85 | +- Аналогично заданию C, но для очереди. |
| 86 | + |
| 87 | +### Упражнение G - Простой дек |
| 88 | + |
| 89 | +- Аналогично заданиям A и D, но для дека. |
| 90 | + |
| 91 | +### Упражнение H - Дек с обработкой ошибок |
| 92 | + |
| 93 | +- Аналогично заданиям B и E, но для дека. |
| 94 | + |
| 95 | +### Упражнение I - Дек неограниченного размера |
| 96 | + |
| 97 | +- Аналогично заданию C и F, но для дека. |
0 commit comments