修改 ArrayStack 实现,以便将堆栈的容量限制为 maxlen



我需要帮助来理解这个任务:

修改 ArrayStack 实现,以便将堆栈的容量限制为 maxlen 元素,其中 maxlen 是构造函数的可选参数(默认为 None(。如果在堆栈满负荷时调用 push,请引发 Full 异常(定义类似于 Empty(。

这就是我正在摆弄的

from exceptions import Empty
from exceptions import Full
class ArrayStack:
def __init__(self):
self._data = []                       # nonpublic list instance
def __len__(self):
return len(self._data)
def is_empty(self):
return len(self._data) == 0
def is_full(self):
return len(self.data) == n-1
def push(self, e):
self._data.append(e)                  # new item stored at end of list
if self.is_full():
raise Full('Stack is full')
return self._data[n-1]
def top(self):
if self.is_empty():
raise Empty('Stack is empty')
return self._data[-1]                
def pop(self):
if self.is_empty():
raise Empty('Stack is empty')
return self._data.pop()

我希望您知道代码中的前两个语句会引发错误。您需要声明您的异常,为此我建议您查看在现代 Python 中声明自定义异常的正确方法?。

您将在__init__中设置maxlen

def __init__(self, maxlen=None):
self.maxlen=maxlen

现在,is_full需要修改以根据self.maxlenNone还是数字来采取不同的行动。如果None那么堆栈永远不会填满(至少在理论上(。

最新更新