问题描述
class Queue:
def __init__(self,size):
self.front=self.rear=-1
self.Q=list()
self.size=size
def empty(self):
return self.front==self.rear
def full(self):
return self.rear==self.size-1
def enqueue(self,item):
if self.full():
print("Stack Overflow")
return
else:
self.rear+=1
self.Q[self.rear]=item
def dequeue(self):
if self.empty():
print("Stack Underflow")
return
else:
a=-1
self.front+=1
a=self.Q[self.front]
return a
解决方法
原因很简单。您将得到一个IndexError
,这意味着您试图读取/写入列表中不存在的索引。解决此问题的关键是在None
方法中使用0
或__init__
初始化列表。
建议的修复程序
def __init__(self,size):
self.front = self.rear=-1
self.size = size
self.Q = [None for i in range(self.size)] # Initializes the list with `None` values
在此,列表中填充了size
值的None
个数字。这样就可以使用索引访问值。
由于列表中没有元素,因此您会收到错误消息。
如果列表在索引i
上没有元素,则不能使用list [i]
如果要添加元素,则可以使用list.append(element)
您的功能将变为:
def enqueue(self,item):
if self.full():
print("Stack Overflow")
return
else:
self.rear+=1
self.Q.append(item)
如果您可以详细说明为什么要使用后排前围等,那么我可以为您提供更多帮助。