Je travaille sur un projet en Java pour une classe pour un certain temps maintenant. C'est une implémentation d'une liste chaînée ( AddressList
, contenant des nœuds simples appelés ListNode
). Le hic, c'est que tout devrait être fait avec des algorithmes récursifs. J'étais capable de tout faire amende sans une méthode: public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
Droit maintenant, mon reverse
fonction appelle une fonction d'assistance qui prend un argument pour permettre à la récursivité.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
avec mon aide func avoir la signature d' private ListNode reverse(ListNode current)
Pour le moment, je l'ai à travailler de manière itérative à l'aide d'une pile, mais ce n'est pas ce que le cahier des charges exige. J'avais trouvé un algorithme en c
que de manière récursive inversée et l'a converti en code Java à la main et il a travaillé, mais n'avait pas de compréhension.
edit: Nevermind, j'ai tout compris dans l'intervalle.
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, personne ne voir aucun problème avec cette route?