You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为自定义Python栈类添加最大容量设置功能?

如何给自定义MyStack类添加最大容量限制?

嘿,我来帮你搞定这个自定义栈的容量限制需求!要给你的MyStack类加上最大容量的限制,你需要做以下几个修改和新增,我给你一步步理清楚:

需要修改/新增的内容:

1. 修改__init__构造方法

给构造函数新增一个max_capacity参数,让用户可以指定栈的最大容量,同时保留默认无限制的情况(默认设为None),这样原来的代码调用也能兼容,不会出错。

修改后的代码:

def __init__(self, max_capacity=None):
    self.myList = []
    self.top = -1
    self.size = 0
    self.max_capacity = max_capacity  # 新增最大容量属性

2. 新增isFull方法

和现有的isEmpty方法对应,用来判断栈是否已经达到最大容量,不管是内部逻辑判断还是外部调用都很方便。

代码实现:

def isFull(self):
    # 如果max_capacity为None,说明无容量限制,永远不会满
    if self.max_capacity is None:
        return False
    return self.size >= self.max_capacity

3. 修改push方法

在添加新元素前,先检查栈是否已满,如果已满就抛出异常(这是Python中比较规范的错误处理方式),避免超出容量限制。

修改后的push方法:

def push(self, item):
    if self.isFull():
        raise ValueError("栈已达到最大容量,无法添加新元素")
    self.myList.append(item)
    self.size += 1
    self.top += 1

4. 补全未完成的pop方法

看你原来的pop代码没写完,这里顺便帮你补全逻辑,确保size和top属性能正确更新:

def pop(self):
    if self.isEmpty():
        return None
    else:
        self.ret = self.myList.pop(self.top)
        self.size -= 1
        self.top -= 1
        return self.ret

完整的MyStack类代码

整合所有修改后的完整代码如下:

class MyStack:
    def __init__(self, max_capacity=None):
        self.myList = []
        self.top = -1
        self.size = 0
        self.max_capacity = max_capacity

    def isEmpty(self):
        return self.size == 0  # 这里简化写法,更简洁直观

    def isFull(self):
        if self.max_capacity is None:
            return False
        return self.size >= self.max_capacity

    def push(self, item):
        if self.isFull():
            raise ValueError("栈已达到最大容量,无法添加新元素")
        self.myList.append(item)
        self.size += 1
        self.top += 1

    def pop(self):
        if self.isEmpty():
            return None
        self.ret = self.myList.pop(self.top)
        self.size -= 1
        self.top -= 1
        return self.ret

使用示例

# 创建一个最大容量为3的栈
stack = MyStack(max_capacity=3)
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop())  # 输出3
stack.push(4)
stack.push(5)  # 这里会抛出ValueError,因为容量已满

内容的提问来源于stack exchange,提问作者박진수

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:44:47