Назад к вопросам
Junior — Middle
86
Можете объяснить, каким образом реализована структура данных очередь?
Ответ от нейросети
sobes.tech AI
Очередь — это структура данных, работающая по принципу FIFO (First In, First Out), то есть первый вошедший элемент будет первым извлечён.
Реализация очереди обычно включает:
- Массив или связный список для хранения элементов.
- Два указателя или индекса:
front(голова очереди) иrear(хвост очереди).
Основные операции:
- enqueue — добавление элемента в конец очереди;
- dequeue — удаление элемента из начала очереди;
- peek/front — просмотр первого элемента без удаления.
Пример на C++ с использованием массива и циклического буфера:
class Queue {
int* arr;
int capacity;
int front;
int rear;
int count;
public:
Queue(int size) {
arr = new int[size];
capacity = size;
front = 0;
rear = -1;
count = 0;
}
void enqueue(int item) {
if (count == capacity) throw std::overflow_error("Queue is full");
rear = (rear + 1) % capacity;
arr[rear] = item;
count++;
}
int dequeue() {
if (count == 0) throw std::underflow_error("Queue is empty");
int item = arr[front];
front = (front + 1) % capacity;
count--;
return item;
}
int size() {
return count;
}
bool isEmpty() {
return count == 0;
}
~Queue() {
delete[] arr;
}
};
Такой подход позволяет эффективно использовать память и выполнять операции за константное время.