Como recorrer una lista enlazada

Hola a todos, hoy os explicare la mejor forma de recorrer una lista enlazada.

Antes de empezar, os recomiendo usar la lista enlazada que hemos proporcionado en este blog.

Lista Dinámica en Java

Recorrer una lista enlazada con los métodos que tenemos, es sencillo. Tenemos que tener en cuenta que para recorrer todos los elementos, tenemos que ir borrando elementos o por la posicion.

Os dejo un simple ejemplo:

/**
 * @author DiscoDurodeRoer
 */
public class Ejemplo {

    public static void main(String[] args) {

        //Creamos la lista
        ListaEnlazada lista = new ListaEnlazada();

        //Insercion de datos
        lista.Insertar_Primero("Elemento 1");
        lista.Insertar_Primero("Elemento 2");
        lista.Insertar_Primero("Elemento 3");

        //Creamos una lista enlazada auxiliar
        ListaEnlazada aux = new ListaEnlazada();

        while(!lista.Esta_Vacia()){

            //Mostramos por consola, el primer elemento de la lista
            System.out.println(lista.Primero().toString());

            //Insertamos en la lista auxiliar
            // el primer elemento de la lista original
            // (añadimos por el final, no por el principio)
            aux.Insertar_Ultimo(lista.Primero().toString());

            //Quitamos el primer elemento
            lista.Quitar_Primero();
        }

        System.out.println("Número de elementos de lista antes de la asignación: "+lista.Cuantos_Elementos());

        //La lista auxiliar se copia a la lista original
        //Haciendo que la lista original vuelva al estado original
        lista = aux;

       System.out.println("Número de elementos de lista despues de la asignación: "+lista.Cuantos_Elementos());
       //La lista auxiliar se desvincula
       aux = null;
    }
} 

Esta es una de las mejores formas de recorrer una lista enlazada. También podemos usar el método devYBorrarPrimero(), eso si, debes guardar el valor que devuelve en objeto del mismo tipo de la lista enlazada. Por ejemplo:

/**
 * @author DiscoDurodeRoer
 */
public class Ejemplo {

    public static void main(String[] args) {

        //Creamos la lista
        ListaEnlazada lista = new ListaEnlazada();

        //Insercion de datos
        lista.Insertar_Primero("Elemento 1");
        lista.Insertar_Primero("Elemento 2");
        lista.Insertar_Primero("Elemento 3");

        //Creamos una lista enlazada auxiliar
        ListaEnlazada aux = new ListaEnlazada();

        while(!lista.Esta_Vacia()){

            //Devuelve y borra
            String elemento=lista.devYBorrarPrimero();

            //Mostramos por consola, el primer elemento de la lista
            System.out.println(elemento);

            //Insertamos en la lista auxiliar
            // el primer elemento de la lista original
            // (añadimos por el final, no por el principio)
            aux.Insertar_Ultimo(elemento);

        }

        System.out.println("Número de elementos de lista antes de la asignación: "+lista.Cuantos_Elementos());

        //La lista auxiliar se copia a la lista original
        //Haciendo que la lista original vuelva al estado original
        lista = aux;

        System.out.println("Número de elementos de lista despues de la asignación: "+lista.Cuantos_Elementos());
        //La lista auxiliar se desvincula aux = null;
    }
}

Espero que os sea de ayuda. Si tenéis dudas, preguntad, estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *