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

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

Ответ

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

Основные операции:

  • enqueue(_:) — добавление элемента в конец очереди (tail).
  • dequeue() — удаление и возврат элемента из начала очереди (head).
  • peek() / front — просмотр первого элемента без удаления.
  • isEmpty — проверка на пустоту.

Реализация на Swift:

struct Queue<T> {
    private var elements: [T] = []

    mutating func enqueue(_ element: T) {
        elements.append(element)
    }

    mutating func dequeue() -> T? {
        return elements.isEmpty ? nil : elements.removeFirst()
    }

    func peek() -> T? {
        return elements.first
    }

    var isEmpty: Bool {
        return elements.isEmpty
    }
}

// Использование:
var queue = Queue<Int>()
queue.enqueue(1)
queue.enqueue(2)
print(queue.dequeue()) // 1
print(queue.peek())    // 2

Применение в iOS/macOS:

  • DispatchQueue — управление задачами в Grand Central Dispatch.
  • OperationQueue — очередь операций с зависимостями.
  • Обработка сообщений, задач печати, буферизация ввода-вывода.

Оптимизация: Для эффективного dequeue() вместо removeFirst() (O(n)) используют кольцевой буфер или два стека.