下面是修改后的基于数组的栈的实现方法,限制栈的容量在最大元素数量 maxlen 内:

class Stack:
    def __init__(self, maxlen=None):
        self.maxlen = maxlen
        self.stack = []

    def is_full(self):
        if self.maxlen is not None and len(self.stack) >= self.maxlen:
            return True
        return False

    def is_empty(self):
        return len(self.stack) == 0

    def push(self, item):
        if self.is_full():
            raise Exception('栈满')
        self.stack.append(item)

    def pop(self):
        if self.is_empty():
            raise Exception('栈空')
        return self.stack.pop()

    def peek(self):
        if self.is_empty():
            raise Exception('栈空')
        return self.stack[-1]

    def size(self):
        return len(self.stack)

在构造函数中,我们添加了一个可选参数 maxlen,用于限制栈的容量。在 push 方法中,我们先判断栈是否已满,如果已满则抛出'栈满'异常。在 is_full 方法中,我们检查栈的长度是否已达到最大元素数量 maxlen。

使用示例:

stack = Stack(maxlen=5)  # 创建一个最大容量为 5 的栈
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
stack.push(5)
stack.push(6)  # 抛出异常:栈满

print(stack.pop())  # 5
print(stack.pop())  # 4
print(stack.size())  # 3
Python 数组实现栈 - 限制最大容量并抛出异常

原文地址: https://www.cveoy.top/t/topic/pahi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录