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

如何重载链表实现的Stack类的__repr__方法以打印栈内所有元素

错误原因

你的原有__repr__存在三个核心问题:

  1. 直接修改节点的elem属性:self._stack.elem = self._stack.next直接篡改了栈内存储的元素值,这是输出出现重复9的核心原因
  2. 没有用临时变量遍历:直接操作栈的头节点self._stack会破坏原栈的结构,执行完__repr__后你的栈数据就已经损坏
  3. 没有返回拼接好的字符串,且末尾会多出多余的逗号

正确实现代码

替换你的__repr__方法为以下内容即可:

def __repr__(self):
    # 空栈直接返回标识
    if self._size == 0:
        return "Stack([])"
    # 用临时变量遍历,不修改原栈的头指针和节点数据
    current = self._stack
    elements = []
    while current is not None:
        elements.append(repr(current.elem))
        current = current.next
    # 拼接成类列表的格式,符合Python内置容器的repr习惯
    return f"Stack([{', '.join(elements)}])"

实现效果

你依次压入4、9、"joe"后打印栈,输出结果为:
Stack(['joe', 9, 4])
完全符合栈先进后出的展示逻辑,且不会修改栈的原有数据。

内容的提问来源于stack exchange,提问作者Apparent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:57:02