Sobes.tech
Back to questions
Junior — Middle
87

Можете объяснить, каким образом реализована структура данных очередь?

Answer from AI

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;
    }
};

Такой подход позволяет эффективно использовать память и выполнять операции за константное время.