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

单链表元素逆序存数组:给定伪代码问题排查求助

单链表逆序伪代码的错误分析

我正在实现将单链表元素逆序存入数组的算法,导师给出一段伪代码。周五下午4点同学们直接抄作业不愿检查,但我发现这段伪代码有问题。导师让我自己实现该方法作为专属作业,我已经写出Python实现,但还没找出伪代码的具体错误和失效原因,希望帮忙指出。

导师提供的伪代码

Reverse(head): 
    Result = [] 
    
    Cursor = null; 
    Last_node = null; 
    
    Node = head; 
    
    While (cursor != head): 
        While (node != cursor): 
            Last_node = node; 
            Node = node.next; 
        Cursor = last_node; 
        Result.append(cursor); 
    Return result;

我的Python实现代码

# reverse the order of the linked list
def reverse(self) -> list:
    result = []
    node = self._front

    while node is not None:
        result.insert(0, node.get_value())
        node = node._next

    return result

伪代码的具体错误及失效原因

  • 触发空指针异常:第一次内层循环会遍历到链表尾节点的next(即null),此时node变为null。进入第二次外层循环后,内层循环条件node != cursor(null != 最后一个有效节点)成立,执行Last_node = node(赋值为null),接着执行Node = node.next,直接访问null的next属性,触发空指针错误,程序直接终止。
  • 循环逻辑混乱,无法正常终止:外层循环的终止条件是cursor == head,但由于上述空指针问题,程序根本走不到cursor指向head的阶段。即使假设能避免空指针,每次内层循环后node的位置没有重置为head,后续遍历也无法正确定位到目标节点,循环逻辑完全失效。
  • 元素收集逻辑错误:伪代码试图通过每次找到cursor的前一个节点来逆序收集元素,但初始cursor为null时,第一次收集的是链表最后一个节点,之后无法继续向前遍历(因为node已经是null),最终只能收集一个节点,完全达不到逆序存入所有元素的目的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:13:15