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

Python实现LinkedList时print方法输出内存地址而非链表内容如何解决

链表代码问题修复

你的代码存在4处可直接复现你描述问题的错误,修正方案如下:

错误详情

  • 传参错误:调用append方法时传入了Node对象,而append方法内部会自动将传入的值封装为Node节点,导致最终存储的data属性是Node实例,打印时就会输出内存地址。
  • append逻辑错误:遍历到尾节点后,没有给尾节点的next属性赋值新节点,反而错误将遍历指针itr重新赋值为新节点,还额外创建了多余的节点,完全没有修改原有链表的结构。
  • print方法逻辑错误:在循环体内部直接写了return,第一次打印第一个节点后就直接终止方法,不会遍历后续节点,且return位置错误导致链表为空时的逻辑也无法正常触发。
  • 语法缩进错误:print方法的def定义行缩进不匹配,不属于LinkedList类的成员方法,运行时会直接报语法错误。

修正后完整代码

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

class LinkedList:
    def __init__(self,head=None):
        self.head = head

    def append(self,data):
        if self.head is None:
            self.head = Node(data)
            return
        itr = self.head
        while itr.next:
            itr = itr.next
        # 直接给尾节点的next赋值新节点
        itr.next = Node(data)

    def print(self):
        itr = self.head
        if itr is None:
            print("None")
            return
        while itr:
            print(itr.data," --> ",end="")
            itr = itr.next
        # 循环结束后打印末尾的None
        print("None")

    def reverse(self):
        pass

linked = LinkedList()
linked.print()
# 直接传值,不要封装Node
linked.append(3)
linked.print()
linked.append(7)
linked.print()
linked.append(10)
linked.print()

运行结果

None
3  --> None
3  --> 7  --> None
3  --> 7  --> 10  --> None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:36:06