Bir süredir bir sınıf için Java projesi üzerinde çalışıyorum. Bağlantılı bir listenin uygulamasıdır (burada adı verilir AddressList
, adı verilen basit düğümleri içerir)ListNode
). İşin püf noktası, her şeyin yinelemeli algoritmalarla yapılması gerektiğidir. Tek bir yöntemle her şeyi iyi yapabildim:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
Şu anda benim reverse
işlevim özyinelemeye izin vermek için bir argüman alan bir yardımcı işlevi çağırıyor.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
Benim yardımcı fonksiyonumun imzası var private ListNode reverse(ListNode current)
.
Şu anda, bir yığın kullanarak yinelemeli olarak çalışmasını sağlıyorum, ancak bu şartnamenin gerektirdiği şey değil. C'de yinelemeli olarak tersine çeviren ve elle Java koduna dönüştüren bir algoritma buldum ve işe yaradı, ancak bunu anlamadım.
Düzenleme: Boşver, bu arada anladım.
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
Ben buradayken, bu rotayla ilgili herhangi bir sorun gören var mı?