2013-10-05 47 views
0

我想在java中爲我的鏈表列表堆棧寫一個toString方法。我有一個堆棧類和一個節點類。我在堆棧類中創建了一個節點來實現push/pop方法。現在我只是無法打印出我的鏈表。我已經寫了下面唯一的方法打印出在我的鏈表第2個元素...如何在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(); 
    } 

} 
+0

這將工作你有'stackList.next.toString()'而不是'stackList.next.value.toString()''。 – Sylwester

回答

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; 
    } 
} 
+0

我的任務需要我使用遞歸,儘管 – lauraxx

+0

你幾乎已經有了:)看到我的編輯。 –