我知道这是一个分钟代码。我无法理解为什么我的链表反转无效。 有人可以在下面的代码中帮我修复我的反向方法。
//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;
}
对此的任何输入都会有所帮助
谢谢!!!
答案 0 :(得分:0)
假设做作业......
编写简单测试:0个项目列表,1个项目列表,2个项目列表,10个项目列表。确保每个工作都有效 - 将缩小错误并学习编写单元测试。
答案 1 :(得分:0)
您确定使用reverse()的返回值来进行迭代而不是root吗?
答案 2 :(得分:0)
我很确定它应该是
return root = reverse(root);
(你的反向逻辑是正确的,但是如果root
仍然指向列表的旧根,那么你将得到一个1元素的链表。)