我正在尝试为java中的链表列表编写一个toString方法。我有一个堆栈类和一个节点类。我在堆栈类中创建了一个节点来实现push / pop方法。现在我在打印链表时遇到问题。我在下面写的方法只打印出链接列表中的前两个元素......
public class StackList<E> implements Stack<E> {
protected Node stackList;
public StackList()
{
stackList = new Node();
stackList.next = null;
}
public String toString()
{
if (stackList.next == null)
{
return (String) stackList.value;
}
else
{
return stackList.value + " ; " + stackList.next.value.toString();
}
}
答案 0 :(得分:1)
我建议不要使用递归,而是使用递归:
public String toString() {
Node curNode = stackList.next;
StringBuilder ret = new StringBuilder(stackList.value);
while (curNode != null) {
ret.append("; " + curNode.value);
curNode = curNode.next;
}
return ret.toString();
}
递归版:(完全无意的押韵)
public String toString() {
return getAfterString(stackList);
}
private String getAfterString(Node node) {
if (node.next != null) {
return node.value + "; " + getAfterString(node.next);
}
else {
return (String) node.value;
}
}