/
victor_t
/
simple_navigator
Обзор
Документация
Войти
/
victor_t
/
simple_navigator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
master
src/graph/Queue.java
108 строк
3 KB
Victor
fix: library classes
06 июл 2026, 01:06
06 июл 2026, 01:06
41665e7
Код
Авторство
О чём код?
package graph; /** * Реализация очереди (структуры данных FIFO — First In, First Out). * * <p>Очередь хранит элементы в порядке добавления. * Первый добавленный элемент извлекается первым.</p> * * @param <E> тип элементов, хранимых в очереди */ public class Queue<E> implements DataStructure { private final Object[] data; private final int capacity; private int head; private int tail; private int size; /** * Создаёт очередь с фиксированной ёмкостью. * * @param capacity максимальное количество элементов, которое может хранить очередь */ public Queue(int capacity) { this.capacity = capacity; this.data = new Object[capacity]; } /** * Добавляет элемент в конец очереди. * * @param element элемент, который нужно добавить * @throws IllegalStateException если очередь переполнена */ public void push(E element) { if (size == capacity) { throw new IllegalStateException("Queue is full"); } data[tail] = element; tail = (tail + 1) % capacity; size++; } /** * Удаляет и возвращает первый элемент очереди. * * @return первый элемент очереди * @throws IllegalStateException если очередь пуста */ @SuppressWarnings("unchecked") public E pop() { if (isEmpty()) { throw new IllegalStateException("Queue is empty"); } E element = (E) data[head]; data[head] = null; head = (head + 1) % capacity; size--; return element; } /** * Возвращает первый элемент очереди без удаления. * * @return первый элемент очереди * @throws IllegalStateException если очередь пуста */ public E front() { if (isEmpty()) { throw new IllegalStateException("Queue is empty"); } return (E) data[head]; } /** * Возвращает последний добавленный элемент очереди без удаления. * * @return последний элемент очереди * @throws IllegalStateException если очередь пуста */ public E back() { if (isEmpty()) { throw new IllegalStateException("Queue is empty"); } int lastIndex = (tail - 1 + capacity) % capacity; return (E) data[lastIndex]; } /** * Проверяет, пуста ли очередь. * * @return {@code true}, если очередь не содержит элементов */ @Override public boolean isEmpty() { return size == 0; } /** * Возвращает текущее количество элементов в очереди. * * @return размер очереди */ @Override public int getSize() { return size; } }