Что такое очередь (queue) как структура данных?

«Что такое очередь (queue) как структура данных?» — вопрос из категории Алгоритмы и структуры данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Очередь (Queue) — это абстрактный тип данных, работающий по принципу FIFO (First-In, First-Out): первый добавленный элемент будет первым извлечённым. Основные операции: enqueue (добавить в конец) и dequeue (удалить из начала).

Реализация в PHP:

  1. Использование встроенного класса SplQueue:

    $queue = new SplQueue();
    $queue->enqueue('A'); // Очередь: [A]
    $queue->enqueue('B'); // Очередь: [A, B]
    echo $queue->dequeue(); // Выведет 'A', очередь: [B]
    echo $queue->bottom();  // Показать первый элемент без удаления: 'B'
  2. Реализация на массивах:

    $queue = [];
    array_push($queue, 'A'); // enqueue
    array_push($queue, 'B');
    $first = array_shift($queue); // dequeue -> 'A'

Области применения в разработке:

  • Алгоритмы: Обход графа в ширину (BFS).
  • Обработка задач: Управление порядком выполнения фоновых задач.
  • Буферизация: Сглаживание нагрузки между быстрым производителем и медленным потребителем данных.

Сложность операций в эффективной реализации должна быть O(1) для enqueue и dequeue.