Saya telah mengerjakan proyek Java untuk kelas untuk sementara waktu sekarang. Ini adalah implementasi dari daftar tertaut (di sini disebut AddressList, berisi node sederhana yang disebut ListNode). Hasil tangkapannya adalah bahwa semuanya harus dilakukan dengan algoritma rekursif. Saya bisa melakukan semuanya dengan baik tanpa satu metode:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
Saat ini reversefungsi saya hanya memanggil fungsi pembantu yang membutuhkan argumen untuk memungkinkan rekursi.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
Dengan fungsi pembantu saya yang memiliki tanda tangan private ListNode reverse(ListNode current).
Saat ini, saya memilikinya bekerja secara iteratif menggunakan tumpukan, tetapi ini bukan yang dibutuhkan spesifikasi. Saya telah menemukan algoritme dalam C yang secara rekursif membalikkan dan mengubahnya menjadi kode Java dengan tangan, dan berhasil, tetapi saya tidak memahaminya.
Sunting: Tidak apa-apa, saya menemukan jawabannya sementara itu.
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
Selama saya di sini, apakah ada yang melihat ada masalah dengan rute ini?