0

我知道这是一个分钟代码。我不明白为什么我的链表反转不起作用。有人可以帮我在下面的代码中修复我的反向方法吗?

//Reverse a single linked list
public Node reverse()
{
    return reverse(root);
}
private Node reverse(Node node)
{
        Node previous = null;  
        Node current = node;  
        Node forward;  

        while (current != null) 
    {  
            forward = current.next;  
            current.next = previous;  
            previous = current;  
            current = forward;  
        }  
    return previous;  
}

对此的任何输入都会有所帮助

谢谢 !!!

4

3 回答 3

0

我很确定应该是

return root = reverse(root);

(您的反向逻辑是正确的,但如果root仍然指向列表的旧根,您最终将得到一个 1 元素链表。)

于 2012-05-10T02:41:35.837 回答
0

您确定使用 reverse() 的返回值而不是 root 进行迭代吗?

于 2012-05-10T02:22:12.307 回答
0

假设家庭作业...

编写简单的测试:0 项列表、1 项列表、2 项列表、10 项列表。比确保它们每个都有效 - 将缩小错误并学习编写单元测试。

于 2012-05-10T01:21:36.607 回答