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