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

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()  # 最后换行优化输出格式

改动说明

  1. 新增while循环:确保从尾节点开始,逐个遍历到链表头部
  2. 修正指针移动:将current.next改为current.prev,匹配双向链表反向遍历逻辑
  3. 优化输出格式:用end=" "让节点值在同一行打印,最后换行提升可读性

测试验证

# 测试代码
dll = DoubleLinkedList()
dll.append(1)
dll.append(3)
dll.append(6)
dll.printReverse()  # 输出:6 3 1

内容的提问来源于stack exchange,提问作者basel elazaly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:55:29