0

我正在尝试在 java 中为我的链表堆栈编写一个 toString 方法。我有一个堆栈类和一个节点类。我在堆栈类中创建了一个节点来实现推送/弹出方法。现在我只是无法打印出我的链接列表。我在下面写的方法只打印出我的链表中的前两个元素......

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();
    }

}
4

1 回答 1

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;   
    }
}
于 2013-10-05T19:32:06.143 回答