python 中的链接队列无法判断它是否为空
Linked queue in python can't tell if it's empty
所以我在 python 中构建了一个链接队列 class,看起来像这样。
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
我正在使用这个 class 来创建一个真正基本的打印队列,该队列可以送入两台打印机。我的问题是,class 中的 isEmpty 函数似乎认为它始终为空。如果我添加 3 个打印作业,然后尝试显示它们,它只会显示最后一个,因为入队函数认为队列是空的。我似乎无法弄清楚为什么如此任何帮助将不胜感激。
你实际遇到的问题是你调用的不是方法,而是引用方法对象本身的boolean值,永远为真。应该是:
if self.isEmpty():
所以我在 python 中构建了一个链接队列 class,看起来像这样。
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
我正在使用这个 class 来创建一个真正基本的打印队列,该队列可以送入两台打印机。我的问题是,class 中的 isEmpty 函数似乎认为它始终为空。如果我添加 3 个打印作业,然后尝试显示它们,它只会显示最后一个,因为入队函数认为队列是空的。我似乎无法弄清楚为什么如此任何帮助将不胜感激。
你实际遇到的问题是你调用的不是方法,而是引用方法对象本身的boolean值,永远为真。应该是:
if self.isEmpty():