JAVA chained lists

2

How to invert a simple chained list in Java? For example, I have the following values: 3 - 2 - 1 and the end result will have to be 1 - 2 - 3.

Note: without using native Java functions such as ArrayList.

public void inverteLista() {
    Lista atual = new Lista();
    atual.setProx(primeiro);
    for (int i = 0; i < tamanho; i++) {
        atual = atual.getProx();
        System.out.println(atual.getValor());
    }
}

This code prints the list in normal order, however I do not know the logic used to reverse it.

    
asked by anonymous 26.03.2015 / 00:04

1 answer

2

It's very simple, just create a recursive function that goes through the elements of the list where the recursive call happens before you start the elements:

public void imprimeContrario(Lista l) {
  //verifica se o nó é nulo
  if (l!=null){

      // Se não for, não é o final da lista, então faça uma chamada recursiva
      // passando o próximo elemento como parâmetro
      imprimeContrario(l.getProximo());

      // imprime o elemento após a chamada recursiva ter sido completada
      System.out.println(l.getInfo());
    }
}

Code execution example:

List: [1] - > [2] - > [3] - > [null]

In this way, when we pass [1] to the function, the following iterations will happen:

printConverse ([1])
counterpressure ([2])
counterpressure ([3])
imprimeContrario ([null])
System.ou.println ([3])
System.ou.println ([2])
System.ou.println ([1])

Output: 3 2 1

    
26.03.2015 / 03:07