Python双向链表反转后无法正常打印的问题排查与修复
修复双向链表printReverse方法的问题
问题定位
你的printReverse方法输出异常的核心原因是反向遍历的指针方向错误,且缺少循环遍历逻辑,导致要么只打印尾节点(比如6),要么空链表时输出None。
原错误代码(模拟常见问题版本)
假设你的代码片段如下:
class Node: def __init__(self, data): self.data = data self.next = None self.prev = None class DoubleLinkedList: def __init__(self): self.head = None self.tail = None def append(self, data): new_node = Node(data) if self.head is None: self.head = new_node self.tail = new_node else: self.tail.next = new_node new_node.prev = self.tail self.tail = new_node # 存在问题的printReverse def printReverse(self): current = self.tail print(current.data) # 仅打印单个节点 current = current.next # 错误使用next指针,反向遍历应走prev
修复方案(最小改动)
仅调整遍历指针方向并添加循环逻辑:
def printReverse(self): current = self.tail while current is not None: # 循环遍历所有反向节点 print(current.data, end=" ") current = current.prev # 替换next为prev,沿前驱指针遍历 print() # 最后换行优化输出格式
改动说明
- 新增
while循环:确保从尾节点开始,逐个遍历到链表头部 - 修正指针移动:将
current.next改为current.prev,匹配双向链表反向遍历逻辑 - 优化输出格式:用
end=" "让节点值在同一行打印,最后换行提升可读性
测试验证
# 测试代码 dll = DoubleLinkedList() dll.append(1) dll.append(3) dll.append(6) dll.printReverse() # 输出:6 3 1
内容的提问来源于stack exchange,提问作者basel elazaly
相关产品推荐
相关产品推荐

