为何LinkedList的stringify_list()方法无法返回全部节点值?
问题分析与解决方案
问题根源
你的stringify_list方法在遍历链表时直接修改了链表的head_node属性。第一次调用该方法时,遍历过程会把self.head_node一步步移动到链表的最后一个节点。当你第二次(在try块中)调用时,链表的头节点已经是最后一个节点了,自然只能输出它的值。
修复代码
修改LinkedList类中的stringify_list方法,使用临时变量遍历链表,避免修改原链表的头节点:
def stringify_list(self): values = "" current_node = self.get_head_node() # 用临时变量保存遍历起点,不改动原头节点 while current_node: values += str(current_node.get_value()) + "\n" current_node = current_node.get_next_node() return values.strip() # 移除末尾多余的换行符
修复说明
- 使用
current_node作为遍历指针,从头节点开始遍历整个链表,全程不会修改self.head_node,保证链表结构始终完整。 - 修改后的循环条件
while current_node可以覆盖所有节点(包括最后一个没有下一个节点的节点),无需单独处理最后一个节点的逻辑,代码更简洁。 - 调用
strip()方法移除最后多余的换行符,让输出格式更整洁。
修改后,无论你调用多少次stringify_list,都会输出完整的节点值:
90 5675 70 5
内容的提问来源于stack exchange,提问作者Ebrahim Al-Aghbari
相关产品推荐
相关产品推荐

