私はしばらくの間、クラスのJavaプロジェクトに取り組んでいます。これは、リンクリストの実装です(ここではと呼ばれAddressList
、と呼ばれる単純なノードを含みますListNode
)。問題は、すべてを再帰的アルゴリズムで実行する必要があることです。私は1つの方法ではなくすべてをうまく行うことができました:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
現在、私のreverse
関数は、再帰を許可する引数を取るヘルパー関数を呼び出すだけです。
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
私のヘルパー関数にはの署名がありprivate ListNode reverse(ListNode current)
ます。
現時点では、スタックを使用して繰り返し作業していますが、これは仕様に必要なものではありません。再帰的に逆にして手動でJavaコードに変換するアルゴリズムをCで見つけましたが、うまくいきましたが、理解できませんでした。
編集:気にしないで、それまでの間、それを理解しました。
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
私がここにいる間、誰かがこのルートに問題を感じていますか?