一般的な単一リンクリストへの参照を受け入れ、文字列のリストに対してメソッドをテストするためのテストプログラムを作成する方法を書くのに問題があります。順番と逆順の両方のリスト)。私はすでにSinglyLinkedListという単一リンクリストを作成しています。リンクリストを逆順に出力する再帰的メソッド
答えて
順不同では、関数recurisvelyを呼び出す前に出力メソッドを呼び出します。
void print(Node n)
{
if (n != null)
{
System.out.println(n.value);
print(n.next);
}
}
逆の場合は、最初に関数を呼び出してください。
void print(Node n)
{
if (n != null)
{
print(n.next);
System.out.println(n.value);
}
}
再帰について考えると、繰り返し何かをやり直すつもりであることがわかります。この場合、ノードを何度も印刷したいのですが、毎回別のノードが必要です。
最初に印刷するノードは、リストの最後にする必要があります。それは私に優れた基本事実を示しています。
void printReverse(Node node) {
if(node.next != null) { // we recurse every time unless we're on the last one
printReverse(node.next); // this says "do this to the next node first"
}
System.out.println(node.data); // we'll print out our node now
}
あなたは
1,2,3,4-
を持っていた場合は、その中の1のノードに印刷呼びたい考えてみましょう。それから "私は次のノードを持って、それを印刷する"と言うだろう。 2ノードにも次のノードがあるので、ノード3に向かいます。ノード3はまだ次のノードを持っているため、印刷前にノード4に向かいます。ノード4は、次のノードを持たないので、それ自体を印刷しようとしている。次に、ノード3がどこで中止したかに戻る。ここで、ノード3は印刷して、ノード2が中断したところに戻ることができる。それは印刷され、ノード1が中止された場所に移動します。印刷してメイン機能に戻ります。
+1私の明白なエラーを指摘します:) –
+1コードに付随する良い説明 –
個人的に、この答えについての私の好きなことは、話すノードです。ノードは、「私は次のノードを持っている」というようなことを言うと、より良いものになります。 – corsiKa
私は上記の回答に100%同意します。私の実装では、ヘルパークラスなしでは動作しませんでした。私の答えは、他の人がコンパイルエラーを受ける場合に備えて、上記の答えを展開することだけです。
public void printReverse()
{
printReverse(head);
}
private void printReverse(GNode<T> node)
{
if (node.next != null)
{
printReverse(node.next);
}
System.out.println(node.data);
}
- 1. リンクリストを再帰的に逆転する
- 2. 逆順で文字列を出力するCの再帰ルーチン
- 3. リンクリストを再帰的にコピー
- 4. リンクリストを逆転させるための再帰的解答
- 5. MariaDB再帰的CTEの順序を逆にする
- 6. JavaScript再帰、配列逆順
- 7. 順序付きリンクリストに再帰的に追加
- 8. リンクリストの配列を再帰的に逆順に並べ替えると、すべてのノードが順番に逆順になりません
- 9. クラスを再帰的に呼び出す(リンクリストを実装する)
- 10. C:リンクリストの再帰的ソート
- 11. リンクリストの再帰的デストラクタ
- 12. 再帰的にメソッドを呼び出す
- 13. 単一リンクリストを逆にするための再帰的な方法?
- 14. ツリー構造を出力する再帰的メソッド
- 15. スタックの内容を出力する再帰的メソッド
- 16. voidメソッドを使用してリンクリストを再帰的に逆変換する方法はありますか?
- 17. MySQL再帰的サイクル検出手順
- 18. 再帰的メソッドを非再帰的Cに変換する
- 19. リンクリスト、再帰
- 20. Racket:リスト上のテール再帰は逆のリストを出力する
- 21. django - メソッドによるクエリセットの再帰的順序
- 22. 再帰的voidメソッドを使用して文字列を逆転
- 23. Java - 再帰的リンクリストの実装
- 24. 出力再帰
- 25. 再帰出力
- 26. Ruby:再帰的メソッド
- 27. 再帰的な手順
- 28. 再帰的ツリーインデックスの順序?
- 29. スタックを再帰的にリンクリストに変換する
- 30. 二重リンクリストの逆転 - ガベージデータの出力
「宿題」の質問の場合は、適切なタグを付けてください。これは、あなたに役立つはずの、より多くの説明を提供するヒントです! –
そして宿題の質問でないなら、それをしないでください。再帰は一般的に線形データ構造を扱うための適切な手法ではありません。 – EJP
@EJP何を待つ?再帰はリストを扱う適切なツールではありませんか?誰かがLispの人々に自分の言語の名前を変更するよう伝えるべきだと思います。 – Voo