Ich arbeite jetzt schon eine Weile an einem Java-Projekt für eine Klasse. Es ist eine Implementierung einer verknüpften Liste (hier genannt AddressList, die einfache Knoten enthält ListNode). Der Haken ist, dass alles mit rekursiven Algorithmen gemacht werden müsste. Ich konnte alles gut machen ohne eine Methode:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
Im Moment reverseruft meine Funktion nur eine Hilfsfunktion auf, die ein Argument verwendet, um eine Rekursion zu ermöglichen.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
Mit meiner Hilfsfunktion mit der Signatur von private ListNode reverse(ListNode current).
Im Moment funktioniert es iterativ mit einem Stapel, aber dies ist nicht das, was die Spezifikation erfordert. Ich hatte in C einen Algorithmus gefunden, der ihn rekursiv umkehrte und von Hand in Java-Code konvertierte, und er funktionierte, aber ich hatte kein Verständnis dafür.
Edit: Nevermind, ich habe es in der Zwischenzeit herausgefunden.
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
Hat jemand Probleme mit dieser Route, während ich hier bin?