Я пытаюсь реализовать очередь из книги clrs, но она не работает, как ожидалось? что не так с моим кодом
Я пытаюсь реализовать очередь из книги clrs, но она не работает, как ожидалось. Что не так с моим кодом?
Может ли быть проблема с размером очереди или операцией постановки в очередь?
Однако очень ясно, что операция очереди в очереди не работает должным образом. Вот мой код:
class Queue:
def __init__(self,size):
self.queue=[None]*(size+1)
self.tail=1
self.head=1
self.size=size
def enqueue(self,item):
#error checking
if(self.isFull()):
print("queue overflows,queue full")
return
#--------------------
self.queue[self.tail]=item
if(self.tail==self.size):
self.tail=1
else:
self.tail=self.tail+1
def dequeue(self):
#error checking
if(self.isEmpty()):
print("queue underflows,queue empty")
return
#--------------------
x=self.queue[self.head]
if(self.head==self.size):
self.head=1
else:
self.head=self.head+1
return x
def isFull(self):
return (self.tail + 1)= self.head
def isEmpty(self):
return self.head==self.tail
def first_person(self):
if(self.isEmpty()):
return ("queue empty")
return self.queue[self.head]
1 ответ
Вы можете использовать "==" для сравнения, "=" в Python используется для назначения. Я предполагаю, что isFull возвращает логическое значение True или False, в зависимости от размера очереди, и я также думаю, что оно реализовано с использованием круговой очереди, следовательно, эта проверка для tail+1 == head.
def isFull(self):
return (self.tail + 1)== self.head