Рубрики
Без рубрики

Как использовать очередь в Python

Как использовать очередь в Python. Теги с Python, очередь.

Эта статья поможет вам понять структуру данных очереди и как ее реализовать.

Очередь – это простой концепция структуры данных, которую можно легко применять в нашей жизни, вроде, как когда вы стоете в очереди, чтобы купить кофе в Starbucks. Давайте сделаем несколько наблюдений, основанных на этом примере:

Теперь давайте посмотрим на вышеуказанные пункты программно:

  • Очереди открыты с обоих концов, означающие элементы, добавляемые сзади и удаляются спереди
  • Элемент, который будет добавлен первый, сначала удаляется (первым в первом – FIFO) Если все элементы удалены, то очередь пуста, и если вы попытаетесь удалить элементы из пустой очереди, выдается предупреждение или сообщение об ошибке.
  • Если очередь заполнена, и вы добавляете больше элементов в очередь, необходимо бросить предупреждение или сообщение об ошибке.

Алгоритм

  1. Объявите список и целое число Maxsize, обозначая виртуальный максимальный размер очереди
  2. Голова и хвост изначально устанавливаются на 0
  3. Метод размера
    • Рассчитывает количество элементов в очереди -> – голова
  4. Сброс метода:
    • Сбрасывает хвост и направляю до 0
    • Создает новую очередь (инициализирует очередь в новый список)
  5. Операция enqueue:
    • Проверьте, если размер меньше, чем Maxsize:
      • Если да, добавьте данные в очередь, а затем прирастить хвост на 1
      • Если нет, Печать очереди полное сообщение
  6. Операция декабря:
    • Проверьте, если размер больше 0:
      • Если да, покройте первый элемент из списка и увеличьте голову на 1
      • Если нет:
        • Метод сброса вызовов
        • Печать очереди Пустое сообщение
class Queue:

    #Constructor
    def __init__(self):
        self.queue = list()
        self.maxSize = 8
        self.head = 0
        self.tail = 0

    #Adding elements
    def enqueue(self,data):
        #Checking if the queue is full
        if self.size() >= self.maxSize:
            return ("Queue Full")
        self.queue.append(data)
        self.tail += 1
        return True     

    #Deleting elements 
    def dequeue(self):
        #Checking if the queue is empty
        if self.size() <= 0:
            self.resetQueue()
            return ("Queue Empty") 
        data = self.queue[self.head]
        self.head+=1
        return data

    #Calculate size
    def size(self):
        return self.tail - self.head

    #Reset queue
    def resetQueue(self):
        self.tail = 0
        self.head = 0
        self.queue = list()

q = Queue()
print(q.enqueue(1))#prints True
print(q.enqueue(2))#prints True
print(q.enqueue(3))#prints True
print(q.enqueue(4))#prints True
print(q.enqueue(5))#prints True
print(q.enqueue(6))#prints True
print(q.enqueue(7))#prints True
print(q.enqueue(8))#prints True
print(q.enqueue(9))#prints Queue Full!
print(q.size())#prints 8        
print(q.dequeue())#prints 8
print(q.dequeue())#prints 7 
print(q.dequeue())#prints 6
print(q.dequeue())#prints 5
print(q.dequeue())#prints 4
print(q.dequeue())#prints 3
print(q.dequeue())#prints 2
print(q.dequeue())#prints 1
print(q.dequeue())#prints Queue Empty
#Queue is reset here 
print(q.enqueue(1))#prints True
print(q.enqueue(2))#prints True
print(q.enqueue(3))#prints True
print(q.enqueue(4))#prints True

Примечание. Элемент 9 не был добавлен в очередь и, следовательно, размер очереди остается 8

Оригинал: “https://dev.to/hasansajedi/how-to-use-queue-in-python-15mp”