微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在应用此代码时出现此错误我已在下面附上错误和代码了? 建议的修复程序

如何解决为什么在应用此代码时出现此错误我已在下面附上错误和代码了? 建议的修复程序

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

Error I am getting

解决方法

原因很简单。您将得到一个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 举报,一经查实,本站将立刻删除。