我正在寻找一个功能性的(不一定是最有效的,因为我对编程很不熟悉)FIFO队列,我的出列有问题。在
我的代码如下:
class QueueNode:
def __init__(self, data):
self.data = data
self.next = None
def __str__(self):
return str(self.data)
class Queue:
def __init__(self):
self.front = None
self.rear = None
self.size = 0
def enqueue(self, item):
newnode = QueueNode(item)
newnode.next = None
if self.size == 0:
self.front = self.rear = newnode
else:
self.rear = newnode
self.rear.next = newnode.next
self.size = self.size+1
def dequeue(self):
dequeued = self.front.data
del self.front
self.size = self.size-1
if self.size == 0:
self.rear = None
print self.front #for testing
如果我这样做,并将一个项目出列,就会得到错误“AttributeError:Queue instance has no attribute‘front’。”我猜我的函数没有正确分配队列的新前端?不过,我不知道怎么解决它。在
我真的不想从头开始,所以如果我的代码有一个调整可以工作的话,我更愿意这样做——我不想太多地最小化运行时,而只是去感受一下类和那些性质的东西。在
提前谢谢你的帮助。在
您还删除了属性
self.front
,然后尝试再次访问它。在某些函数末尾缺少
^{pr2}$:
。在我不确定您的意图是什么,但是
self.front
是变量,它没有属性data
您还缺少
def
和__init__
之间的空格问题是这条线:
这将从
self
中删除(删除)front
属性。因此,在几行之后尝试print self.front
时会出现错误。再也没有所谓的self.front
。在相关问题 更多 >
编程相关推荐