Java 如何在给定特定类的情况下反转LinkedList:未提供所需输出的代码
我想编写一个方法Java 如何在给定特定类的情况下反转LinkedList:未提供所需输出的代码,java,linked-list,Java,Linked List,我想编写一个方法public void reverse(),它只使用下面的类来反转LinkedList。 因此,给定列表432 1,结果应该是1234 public class LinkedList { public Node head = null; public class Node { public int value; public Node next; Node(int value, Node next) {
public void reverse()
,它只使用下面的类来反转LinkedList。
因此,给定列表432 1
,结果应该是1234
public class LinkedList {
public Node head = null;
public class Node {
public int value;
public Node next;
Node(int value, Node next) {
this.value = value
this.next = next;
}
}
}
我已经成功地编写了这段代码,它可以正常工作
public void reverse() {
Node tmp = head;
Node prev = null;
Node nextNode = null;
while(tmp != null && tmp.next != null) {
nextNode = tmp.next;
tmp.next = prev;
prev = tmp;
tmp = nextNode;
}
head = prev;
}
问题是:对于一个列表4321
我得到234
。
为什么会这样?我现在有一个有效的解决方案,它不会抛出任何异常 我只需要删除条件
tmp.next!=空
public void reverse() {
Node tmp = head;
Node prev = null;
Node nextNode = null;
while(tmp != null) {
nextNode = tmp.next;
tmp.next = prev;
prev = tmp;
tmp = nextNode;
}
head = prev;
}
我已经编写了一个方法,但当它被反转时,我似乎缺少列表中的一个值。我现在尝试删除
tmp.next!=空
,它可以工作。这就是你的意思吗?或者你的意思是我应该在这两个条件之外写一个条件?我只是想给你指出正确的方向。我没有完全想清楚。只需问问自己应该仔细测试哪些“特殊”示例数据。您反转了一个包含4个成员的列表。嗯,0还是1呢?也试试看,如果您的代码没有抛出任何异常,那么它可能已经足够好了;-)@幽灵猫谢谢你朝着正确的方向轻推!