如何解决为什么在应用此代码时出现此错误我已在下面附上错误和代码了? 建议的修复程序
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)
如果您可以详细说明为什么要使用后排前围等,那么我可以为您提供更多帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。