В этой статье мы рассмотрим основные концепции очереди, ее типы и методы реализации.
Очередь
Очередь — это АТД с линейной структурой, которая следует определенному порядку выполнения операций. Заказ First In First Out (FIFO).
Практические примеры:
Хорошим примером очереди является любая очередь людей в банке или магазине. Что следует правилу: приходит первым и обслуживается первым.
Основное различие между стеком (Нажмите, чтобы увидеть мой блог в этом ADT) и очередью заключается в том, что мы удаляем недавно добавленные элементы из стека (при выполнении операции извлечения). Но в Queue мы удаляем первый добавленный элемент при вызове операции удаления.
Операции в очереди:
В очереди выполняются следующие основные операции:
→ Enqueue():добавляет элемент в очередь.
→ Dequeue(): удаляет элемент из очереди.
→ IsEmpty (): Очереди пусты или не
Все операции будут иметь временную сложность O(1)
Типы очереди
1. Приоритетная очередь
Это похоже на перегородки в общественном транспорте, которые имеют секции первого, второго и эконом-класса для пассажиров.
Характеристики
→ Каждый элемент имеет связанный с ним приоритет.
→ Элемент с высоким приоритетом удаляется из очереди перед элементом с низким приоритетом.
→ Если два элемента имеют одинаковый приоритет, они обслуживаются в соответствии с их порядком в очереди.
2. Дек
Это версия Queue, которая позволяет вставлять и удалять на обоих концах.
Реализация для очередей
Существует два метода реализации очередей.
на основе массива
Легко реализовать, но потому что массив имеет фиксированный размер, и это может где-то создать проблему (когда очередь превышает размер массива).
Связанный список на основе
Эффективный, но сложный в реализации, а также требует больше памяти, чем массивы (узел указателя).
Спасибо за чтение и удачного обучения! 🙌
PS: Вы можете найти коды реализации очередей и приоритетных очередей в моей Учетной записи GitHub.