我正在嘗試使用容器的節點(對象)實現鏈接隊列。我的代碼如下。正如你所看到的輸出,第二個值在出於某種原因出隊時被跳過。可能在某處存在缺陷。我發現很難把握,至於物體究竟發生了什麼。請幫忙!在Python中使用對象容器的LinkedQueue不能按預期方式工作
代碼:
# Queue FIFO as a container of Nodes(objects)
class Node(object):
def __init__(self, value):
self.value = value
self.next = None
class LinkedQueue(object):
def __init__(self):
self.front = None
self.back = None
def dequeue(self):
#print self.front.__dict__, self.front.next
if self.front:
value = self.front.value
self.front = self.front.next
return value
raise Exception('Queue Empty! Cannot dequeue')
def enqueue(self, value):
node = Node(value)
if self.front:
self.front.next = node
else:
self.front = node
self.back = node
if not self.front is None:
print 'BACK: ', self.back.__dict__, self.back.next
print 'FRONT: ', self.front.__dict__, self.front.next
return True
if __name__ == '__main__':
queue = LinkedQueue()
queue.enqueue(11)
queue.enqueue(10)
queue.enqueue(9)
print
print
print queue.dequeue()
print queue.dequeue()
輸出:
BACK: {'value': 11, 'next': None} None
FRONT: {'value': 11, 'next': None} None
BACK: {'value': 10, 'next': None} None
FRONT: {'value': 11, 'next': <__main__.Node object at 0x1048cdb10>} <__main__.Node object at 0x1048cdb10>
BACK: {'value': 9, 'next': None} None
FRONT: {'value': 11, 'next': <__main__.Node object at 0x1048cdb50>} <__main__.Node object at 0x1048cdb50>
11
9