Итак, я построил связанный класс очереди в python, который выглядит так.Связанная очередь в 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 считает, что очередь пуста. Я просто не могу понять, почему так нужна всякая помощь.
Определение 'isEmpty()' должно быть 'def isEmpty (self):'. Это, вероятно, не ваша фактическая проблема, но. –
Кроме того, вы проверяете 'self.isEmpty' в' dequeue', а не 'self.isEmpty()'. Первый просто проверяет, существует ли метод 'isEmpty', а не вызывает его и всегда будет истинным. Это может быть вашей реальной проблемой. (То же самое происходит в 'enqueue'.) –