所以我在python中构建了一个看起来像这样的链接队列类。
class queue:
class _Node:
def __init__(self, elem, next):
self._elem = elem
self._next = next
def __init__(self):
self._rear = None
self._front = None
self._size = 0
def enqueue(self, value):
if self.isEmpty:
self._front = self._Node(value, None)
self._rear = self._front
self._size += 1
return
self._rear._next = self._Node(value, None)
self._rear = self._rear._next
self._size += 1
return
def dequeue(self):
retVal = self._front._elem
self._front = self._front._next
self._size -= 1
if self.isEmpty:
self._rear = None
return retVal
def __len__(self):
return self._size
def isEmpty():
return len(self) == 0
我正在使用这个类来创建一个真正基本的打印队列,该队列可以输入两台打印机。我的问题是,我的类中的isEmpty函数似乎认为它总是空的。如果我添加3个打印作业,然后尝试显示它们,它将只显示最后一个,因为enqueue函数认为队列为空。我似乎无法弄明白为什么所以任何帮助都会受到高度赞赏。
答案 0 :(得分:0)
您实际遇到的问题是您没有调用方法,而只是引用方法对象本身的布尔值,这始终是真的。它应该是:
if self.isEmpty():