【发布时间】:2016-10-31 15:52:33
【问题描述】:
AM 在 python 中实现一个队列。我已经完成的代码如下,但我无法弄清楚如何删除队列中的最后一项。我的实现显然是正确的。我在代码中遗漏了什么
class Queue:
class node:
def __init__(self):
self.data = None
self.next = None
def __init__(self):
self.cur_node = None
self.head = None
def isEmpty(self):
return self.head==None
def push(self,data):
new_node = self.node()
if self.head == None:
new_node.data=data
new_node.next=None
self.head = new_node
self.cur_node = None
else:
new_node.data = data
node=self.head
self.cur_node=node
new_node.next=self.cur_node
self.head=new_node
#set it to head and change current head to next
def list_print(self):
node = self.head
while node:
print (node.data)
node = node.next
def dequeue(self): # A Queue IMPLEMENTS ITS STRUCTURE AS FIFO ( First IN First OUT)
if self.head == None:
raise Exception("Queue is empty")
else:# Remove the last item which entered first
node=self.head
prevnode=node
nodetodel=node
while node:
if node.next==None:
nodetodel=node
print(node.data)
node=node.next
else:
#print(node.data)
node=node.next
prevnode=node
self.cur_node=prevnode
self.cur_node.next=None
print(node.data)
del(node)
lyst = ["Bill", "David", "Susan", "Jane", "Kent", "Brad"]
n=Queue()
for name in lyst:
n.push(name)
n.dequeue()
#n.list_print()
print("Done")
【问题讨论】:
-
您遇到的具体问题是什么?
-
出队未按预期工作。程序在此时停止,最后一条语句`print("Done")没有输出,说明删除有问题
标签: python linked-list queue