Python链表类交互异常:size方法调用错误与next_node无高亮
Python链表问题修复方案
问题1:size方法调用返回绑定方法而非数值
你看到的bound method LinkedList.size of <__main__.LinkedList object...>是因为没有调用方法,只是引用了方法对象。正确的调用方式必须在方法名后加括号:
# 错误写法 print(linked_list.size) # 正确写法 print(linked_list.size())
问题2:Node类的next_node设计错误
你的Node类中next_node = None是类属性,所有Node实例会共享这个变量,这会导致链表节点之间的引用逻辑混乱。应当将next_node改为实例属性,放到__init__方法中初始化:
class Node: def __init__(self, data): self.data = data self.next_node = None # 改为实例属性,每个节点拥有独立的next引用 def __repr__(self): return "<Node data: %s>" % self.data
完整修复后的代码
class Node: def __init__(self, data): self.data = data self.next_node = None def __repr__(self): return "<Node data: %s>" % self.data class LinkedList: def __init__(self): self.head = None def is_empty(self): return self.head is None # 推荐用is None替代==None,语义更准确 def size(self): current = self.head count = 0 while current: count += 1 current = current.next_node return count # 新增添加节点的方法,方便测试链表功能 def add(self, data): new_node = Node(data) new_node.next_node = self.head self.head = new_node
测试示例
# 创建链表并添加节点 ll = LinkedList() ll.add(5) print(ll.size()) # 输出1,符合预期
内容的提问来源于stack exchange,提问作者Oleksandr Danulchyk
相关产品推荐
相关产品推荐

