Je travaille sur un projet Java pour une classe depuis un moment maintenant. C'est une implémentation d'une liste chaînée (appelée ici AddressList
, contenant des nœuds simples appelés ListNode
). Le hic, c'est que tout devrait être fait avec des algorithmes récursifs. J'ai pu tout faire sans une seule méthode:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
À l'heure actuelle, ma reverse
fonction appelle simplement une fonction d'assistance qui prend un argument pour autoriser la récursivité.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
Avec ma fonction d'assistance ayant la signature de private ListNode reverse(ListNode current)
.
Pour le moment, je le fais fonctionner de manière itérative en utilisant une pile, mais ce n'est pas ce que la spécification exige. J'avais trouvé un algorithme en C qui l'inversait de manière récursive et le convertissait manuellement en code Java, et cela fonctionnait, mais je ne l'avais pas compris.
Edit: Nevermind, je l'ai compris entre-temps.
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
Pendant que je suis ici, est-ce que quelqu'un voit des problèmes avec cet itinéraire?