Lista Dinámica en Java

Hola a todos, hoy os explicare que son y como programar la estructura de una lista enlazada en Java.

Una lista dinámica es una colección de objetos enlazadas entre si. Es lo que se denomina una estructura dinámica, estas pueden crecer tanto como se quiera.

No se deben confundir con los arrays, estos debemos definirles el tamaño que tendrán al crearlos.

Estas listas esta compuesta por una clase que maneja la lista y otra que contiene la información de los objetos de la lista, llamados nodos.

Nodo
Lista dinamica

Os dejo también un pequeño fichero de prueba para que veáis como funciona.

Como vemos, el único atributo de la lista es primero que es el primer elemento, es decir, su referencia, este con su atributo siguiente apuntara al siguiente elemento cuando se añade un nuevo elemento. Puede tener también otros atributos, como ultimo que indicara el ultimo elemento.

Esta lista dinámica puede usarse para cualquier tipo de dato, gracias a los genéricos, fíjate en el fichero de prueba de como se debe iniciar. Una vez hecho, todos los datos son de ese tipo dentro de un nodo

Veamos un pequeño esquema sobre como es una lista enlazada.

Cuando la creamos tendría este aspecto.

listaEnlazada1

Como vemos, no tiene nada, ya que no hemos insertado nada. Cuando insertamos un dato, internamente se crea un nodo, si la lista esta vacía sera el primero, sino lo esta, normalmente, va al final pero según como quieras insertar.

listaEnlazada2

Insertamos otro elemento al final.

listaEnlazada3

Cuando insertamos datos (en este caso 2 elementos), primero apunta al primer nodo y este al segundo. En el último nodo,  el atributo siguiente es null, ya que no hay mas nodos.

También podemos borrar, si borramos el primero, el nodo2 sera el nuevo primero.

listaEnlazada4

Y así consecutivamente, os recomiendo ejecutar el código de prueba e intentar comprender el código.

Para recorrer una lista enlazada que tenga varios nodos, siempre empezamos por el nodo primero y usando el método getSiguiente(), avanzamos por cada uno de los nodos. El código sería así:

Gráficamente, se haría así para esta lista enlazada:

listaEnlazada3Aux apunta al primer nodo.

recorridoListaEnlazada1
Después, aux apunta al segundo nodo.
recorridoListaEnlazada2
Por ultimo, aux vale null pero como en la comprobación del while hemos puesto que si aux!=null continue, como es null, se para.

recorridoListaEnlazada3

Os dejo una serie de vídeos donde hemos ido creándola.

Os dejo aquí el repositorio de Github.

Espero que os sea de ayuda. Si teneos dudas, preguntad. Estamos para ayudarte.

Compartir

4 comentarios

  1. Chanito

    la función getElemento() dónde la defines????

  2. jose

    De donde sacaste el metodo getElemento

  3. Falu Sanchez Mera

    Hola, me gustaría saber de donde se obtiene ese «getElemento()» por favor.

  4. Disco Duro de Roer Post author

    Cambialo por getDato().

    Lo modifico, gracias.

Deja una respuesta

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


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539