Контест Middle Дженерики и стирание обновлено

Кольцевой буфер

Условие

Реализуйте кольцевой буфер ёмкости c. Операции:

  • put x добавить элемент; если буфер полон, самый старый элемент перезаписывается;
  • get извлечь и вывести самый старый элемент или empty;
  • size вывести число элементов.

Решение удобно оформить как обобщённый класс RingBuffer<T> на массиве.

Ввод: в первой строке c и q (1 ≤ c ≤ 10⁴, 1 ≤ q ≤ 2·10⁴), далее операции. Элементы это строки из латинских букв и цифр.

Вывод: ответы на get и size.

Пример

3 8
put a
put b
put c
put d
size
get
get
get
3
b
c
d

Как подойти

Подсказки: 2
  1. new T[n] не скомпилируется: используйте Object[].
  2. Хвост = (head + size) % capacity.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.