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 reversefunció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?