Контест Middle Указатели и ссылки обновлено
Кольцевой буфер для логов
Условие
Реализуйте кольцевой буфер ёмкости cap для последних событий. Операции:
push x: добавитьxв конец; если буфер полон, самое старое событие вытесняется;pop: удалить и вывести самое старое событие, илиempty, если буфер пуст;front: вывести самое старое событие, не удаляя, илиempty.
Память выделите один раз: массив на cap элементов и индексы головы и размера, без сдвигов элементов.
Ввод: в первой строке cap и q (1 ≤ cap ≤ 10⁴, 1 ≤ q ≤ 10⁴), далее q операций. |x| ≤ 10⁹.
Вывод: ответы на pop и front, каждый с новой строки.
Пример 1
Ввод:
2 6
push 1
push 2
push 3
front
pop
pop
Вывод:
2
2
3
Пример 2
Ввод:
1 3
pop
push 5
front
Вывод:
empty
5
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Удалить узлы списка с заданными значениями
Следующий вопрос
Повернуть матрицу, хранящуюся одним буфером