Стек и очередь
Стек (LIFO) и очередь (FIFO): скобочные последовательности и порядок обработки.
Две простейшие структуры данных различаются порядком извлечения:
• Стек — LIFO (last in, first out): последним пришёл — первым ушёл. Как стопка тарелок.
• Очередь — FIFO (first in, first out): первым пришёл — первым ушёл. Как очередь в магазине.
Стек в C++ — std::stack (push, top, pop), очередь — std::queue (push, front, pop).
Каноническая задача на стек — правильная скобочная последовательность: каждая закрывающая скобка должна соответствовать последней открытой. «Последней открытой» — это и есть вершина стека.
Проверка скобок трёх видов. Введите: ([]{}())
Обратите внимание на две проверки, которые часто забывают: закрывающая скобка при ПУСТОМ стеке (лишняя закрывающая) и НЕПУСТОЙ стек в конце (незакрытые скобки).
Очередь вы уже видели, даже если не заметили: она лежит в основе обхода в ширину (BFS), который ждёт вас на уровне 4. Пока — минимальный пример порядка обслуживания.
Очередь: кто пришёл первым, тот и обслужен первым
Задание: по строке из скобок найдите длину самого глубокого вложения (подсказка: это максимальный размер стека за всё время; для одного вида скобок хватит даже счётчика).
Отметьте урок пройденным и переходите к set и map.