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 reverse
fungsi 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?