En tant que programmeur python relativement nouveau, j'ai récemment tenté d'émuler enqueue et dequeue en utilisant une classe et une sous-classe. À l'heure actuelle, mon code lu plus une tentative d'exécution lit comme suit:Emulation de Python Enqueue et Dequeue en utilisant une sous-classe
class queue:
class node:
def __init__(self, value, nextNode):
self.value = value
self.nextNode = nextNode
def __init__(self):
self.top = None
self.last = None
self.size = 0
def __len__(self):
return self.size
def enqueue(self, value):
#This creates an extra node with "value" and inserts at the top
newNode=queue.node(value,None)
if self.size ==0:
self.top=newNode
self.last=self.top
self.size+=1
else:
self.last.nextNode=newNode
self.last=newNode
self.size+=1
def dequeue(self):
#This returns self.top.value and at the same time deletes the top
node.
if self.size ==0:
return "error: dequeue from an empty queue"
elif self.size == 1:
val=self.top.value
nxt=self.top.nextNode
self.top=None
self.last=None
else:
val=self.top.value
nxt=self.top.nextNode
self.top=nxt
return val
q = queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
x=q.dequeue()
output = []
while len(q)>0:
x = q.dequeue()
output.append(x)
print(output)
#This should show [2, 3, 4]
D'après ce que je peux comprendre, renvoie une valeur actuellement je recevoir ma question principale:
AttributeError: objet « NoneType » n'a pas Attribut 'value'
Lorsque j'essaie de fonctionner. Si quelqu'un pouvait clarifier la question, ce serait grandement apprécié.
Wow, je ne peux pas croire que j'ai raté ça. J'ai jeté un self.size- = 1 dans les déclarations de file d'attente et bien sûr cela fonctionne comme un charme! Merci d'avoir fait remarquer cela! –
Pas de problème du tout Michael. Beau travail avec tout le reste cependant. Je viens de tomber en deux lignes et ça a marché comme un charme de mon côté. – Kyle