2016-04-06 9 views
0

私は作成した循環リンクリストクラスの結果を出力するヘルパーメソッドを持つtoStringを持っています。これです:円二重リンクリストtoStringが動作しない

/** 
    * Returns a String version of this. 
    * 
    * @return A String description of this. 
    */ 
    public String toString(){ 
    String string = ""; 
    DoubleNode<E> current = this.head; 
    string += stringHelper(this.head); 
    return string; 
    } 
    //Helps the full to string method 
    private String stringHelper(DoubleNode<E> node){ 
    String string = ""; 
    if(node == null){ 
     return string; 
    } 
    System.out.println("Node value: " + node.getValue()); 
    node = node.getNextLink(); 
    if(node == this.head){ 
     string += node.getValue(); 
     return string; 
    } 
    else{ 
     string += node.getValue(); 
     return (stringHelper(node.getNextLink()) + ", " + string); 
    } 
    } 

しかし、それは動作していないようです。私は40、10、2を印刷しなければならないテストケースを持っていますが、40、10しか印刷しません。

+1

ペンと紙でその実行を追跡したときに、あなたは何を発見しましたか?または、デバッガでそのステップを踏んだとき? – Savior

+0

何らかの理由でprintステートメントが40と2を出力しますが、なぜそれが行われたのかわかりません。私はデバッガの経験がありません。 – MegaZeroX

答えて

0

私はそれを理解しました。これを投稿して申し訳ありません、私はこれを自分で行っていたはずです。私はやりました:

/** 
    * Returns a String version of this. 
    * 
    * @return A String description of this. 
    */ 
    public String toString(){ 
    String string = ""; 
    DoubleNode<E> current = this.head; 
    string += stringHelper(this.head); 
    return string; 
    } 
    //Helps the full to string method 
    private String stringHelper(DoubleNode<E> node){ 
    String string = ""; 
    if(node == null){ 
     return string; 
    } 
    string+= node.getValue(); 
    string+= ", "; 
    node = node.getNextLink(); 
    if(node == this.head){ 
     return string; 
    } 
    else{ 
     string += node.getValue(); 
     return (string + ", " + stringHelper(node.getNextLink())); 
    } 
    } 
0

stringHelper(node.getNextLink())stringHelper(node)に置き換える必要があります。stringHelper()の方法ではnode.getNextLink()を2回呼び出すと正しくありません。

+0

あなたが言ったように私がそれを置き換えるとき、それはもはやどのトラバーサルもないので、最初の要素だけを出力します。 – MegaZeroX

+0

クラスコード全体がなくても正しい答えを出すのは難しいです。しかし、とにかく問題はあなたが 'node.getNextLink()'を2回呼び出すことです –

関連する問題