嗨,我在尝试使用递归以相反的顺序打印单链表时遇到了一些麻烦。我看过一些例子,但我的方法不带任何参数。我想按以下格式打印出来:
input: [1, 2, 3, 4, 5] and output:[5, 4, 3, 2, 1]
first 指的是我的单链表中的第一个节点,我用它StringBuilder
来构建我的列表,以便我可以在最后返回它。
这是我到目前为止所拥有的:
public String printReverse() {
StringBuilder myString = new StringBuilder("[");
if (head != null) { // base case
head = head.next;
myString.append(head.value); // line 406
myString.append(", "); // line 407
printReverse(); // line 408
}
myString = myString.append("]");
return myString.toString();
}
我收到以下错误:
Exception in thread "main" java.lang.NullPointerException
at myprog.SLL$Node.access$100(SLL.java:445)
at myprog.SLL.printReverse(SLL.java:406)
at myprog.SLL.printReverse(SLL.java:408)
at myprog.SLL.printReverse(SLL.java:408)
at myprog.SLL.printReverse(SLL.java:408)
at myprog.SLL.printReverse(SLL.java:408)
at myprog.SLLApp.myMethod(SLLApp.java:198)
at myprog.SLLApp.<init>(SLLApp.java:37)
at myprog.SLLApp.main(SLLApp.java:26)
我看不出我做错了什么,但我怀疑这可能是我自己调用该方法的方式。谁能建议我可能做错了什么以及如何解决它?
谢谢!