如何在java中为链表创建递归的toString方法

时间:2013-10-05 19:22:42

标签: recursion linked-list stack

我正在尝试为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();
    }

}

1 个答案:

答案 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;   
    }
}