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

Python无序链表打印问题修复:补空格并移除None

问题修复与潜在问题排查

问题根源分析

你的输出问题来自链表__str__方法的两个逻辑错误:

  1. 元素拼接无空格:遍历链表时,后续节点的数值直接追加到结果字符串,没有添加分隔空格,导致54和26直接连为5426。
  2. 末尾多出None:循环结束后错误地将已经变为None的链表尾指针转成字符串追加,导致输出末尾出现None。

修复后的代码实现

以常见的无序链表结构为例,修正__str__方法即可解决问题:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class UnorderedList:
    def __init__(self):
        self.head = None

    def add(self, item):
        temp = Node(item)
        temp.next = self.head
        self.head = temp

    def __str__(self):
        # 用列表收集所有元素字符串,再用空格连接
        elements = []
        current = self.head
        while current is not None:
            elements.append(str(current.data))
            current = current.next
        return " ".join(elements)

# 测试代码
ul = UnorderedList()
ul.add(31)
ul.add(77)
ul.add(17)
ul.add(93)
ul.add(26)
ul.add(54)
print(ul)  # 输出:54 26 93 17 77 31

潜在问题排查

  1. 空链表处理:原代码如果遇到空链表,可能返回None或抛出异常;修复后的代码会返回空字符串,符合预期。
  2. 循环边界错误:避免使用while current.next is not None这种写法,会漏掉最后一个节点;正确的写法是while current is not None,遍历所有有效节点。
  3. 数据类型兼容性:如果节点存储非字符串类型(如数字、自定义对象),必须显式转成字符串,否则拼接会报错,修复后的代码已经处理了这一点。
  4. 多余空格问题:直接用" ".join()可以避免手动拼接时容易出现的开头/末尾多余空格问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:12:59