码:
public class NodeType {
public int value;
public NodeType next;
public NodeType(){
value = 0;
next = null;
}
public void printFollowingNodesInOrder(){
System.out.println(this.value);
while(this.next != null){
this.next.printFollowingNodesInOrder();
}
}
}
测试类别:
public class TestClass {
public static void main(String[] args){
NodeType nodeOne = new NodeType();
NodeType nodeTwo = new NodeType();
NodeType nodeThree = new NodeType();
nodeOne.value = 1;
nodeTwo.value = 2;
nodeThree.value = 3;
nodeOne.next = nodeTwo;
nodeTwo.next = nodeThree;
nodeOne.printFollowingNodesInOrder();
}
}
当我运行此main方法时,该方法似乎在3之后不会退出。
输出为:
1个
2
3
3
3
3
3
3
3
谁能看到问题所在?
最佳答案
while (this.next != null)
一旦开始在最后一个节点上调用
printFollowingNodesInOrder
,它将永远循环,因为倒数第二个节点(正在调用函数的那个节点)具有一个next
永远不会消失的循环。使用递归访问下一个节点时,无需循环执行。退出循环,它将起作用,但是在调用该函数之前,请确保检查null。