He estado trabajando en un proyecto de Java para una clase por un tiempo. Es una implementación de una lista enlazada (aquí llamada AddressList
, que contiene nodos simples llamadosListNode
). El problema es que todo tendría que hacerse con algoritmos recursivos. Pude hacer todo bien sin un método:public AddressList reverse()
ListNode:
public class ListNode{
public String data;
public ListNode next;
}
En este momento, mi reverse
función solo llama a una función auxiliar que toma un argumento para permitir la recursividad.
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
Con mi función de ayudante con la firma de private ListNode reverse(ListNode current)
.
Por el momento, lo tengo funcionando iterativamente usando una pila, pero esto no es lo que requiere la especificación. Encontré un algoritmo en C que lo invirtió de forma recursiva y lo convirtió a código Java a mano, y funcionó, pero no lo entendía.
Editar: No importa, lo descubrí mientras tanto.
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
Mientras estoy aquí, ¿alguien ve algún problema con esta ruta?