繁体   English   中英

为什么我在应用此代码时收到此错误。 我在下面附上了错误和代码?

[英]Why I am getting this error while applying this code. I have enclosed the error and code below?

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这意味着您正在尝试读取/写入列表中不存在的索引。 解决这个问题的关键是在__init__方法中使用None0初始化列表。

建议修复


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

在这里,列表填充了None值的size编号。 这使得使用索引访问值成为可能。

您收到错误,因为列表中没有元素。

如果列表在索引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)

如果你能解释更多关于你为什么使用后前等,我可以帮助你更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM