Python中的循环数组类

0 投票
1 回答
2264 浏览
提问于 2025-04-17 02:28

我正在做一个项目,想创建一个循环数组的类,使用的编程语言是Python。我对Python中的类还不太熟悉,不过我看了一些网页和书籍的章节,觉得自己对它们的工作原理有了一些了解。但是我还是需要帮助,所以我决定来这里请教大家 :)

我们的类需要实现几个操作:在前面插入、在后面插入、在指定位置插入、从前面移除、从后面移除、从指定位置移除。

我已经开始写代码了,但遇到了一些问题,而且我不太确定我的语法是否正确。

这是我目前写的代码:

class circular:

    def __init__(self):
        self.store = []
        self.capacity = len(self.store)
        self.size = 0
        self.startIndex = 0
        self.endIndex = 0

    def decrementIndex(self):
        index = index - 1
        if index < 0:
            self.store = self.store + self.capacity

    def incrementIndex(self):
        index = index + 1
        if index == self.capacity:
            index = index - self.capacity

    def addToBack(self, value):
        self.store[self.endIndex] = value
        self.endIndex = incrementIndex(self.endIndex)
        self.size += 1

    def addToFront(self, value):
        if self.size == 0:
            addToBack(self, value)
        else:
            self.startIndex = decrementIndex(self.startIndex)
            self.store[self.startIndex] = value
            self.size += 1

我在这里停下来了,想先测试一些函数,主要是addToFront和addToBack。在IDLE中测试时,我用c = circular()和c.addToBack(2)时出现了索引错误……我也不太明白为什么。这不是唯一的问题,只是我卡住的地方,需要帮助才能继续。

我在这里发帖是因为我需要帮助,想要学习,而不是因为我懒惰,没有尝试去研究我的问题。谢谢大家!

1 个回答

1

__init__ 里你设置了

self.store = []

addToBack 里你做了

self.store[self.endIndex] = value

如果这是对循环数组的第一次操作,并且你传入 2 作为 value,那么这就变成了

[][0] = 2

问题应该很明显——一个空列表没有索引 0,它根本没有任何索引。

你需要用不同的方式把这个项目添加到列表中。

我不会告诉你具体怎么做,因为这是你作业的一部分,需要你自己去想办法。

撰写回答