单链表元素逆序存数组:给定伪代码问题排查求助
单链表逆序伪代码的错误分析
我正在实现将单链表元素逆序存入数组的算法,导师给出一段伪代码。周五下午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
相关产品推荐
相关产品推荐

