Sie sind auf Seite 1von 17

Instituto Universitario Politcnico Santiago Mario

Unidad N V Listas Enlazadas

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Lista Enlazadas
Es una coleccin o secuencia de elementos dispuestos uno detrs de otro, en la que cada

elemento se conecta al siguiente elemento por enlace o referencia. La idea bsica


consiste en construir una lista cuyos elementos, llamados nodos, se componen de dos partes o campos: la primera parte o campo contiene la informacin y es, por consiguiente, un valor de un tipo genrico (denominado Dato, TipoElemento, Infor, etc.), y la segunda parte o campo es una referencia (enlace o sgte) que apunta al siguiente elemento de la lista.

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Lista Enlazadas

en

en

en

null

Diferentes representaciones grficas del ltimo nodo de una lista

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Clasificacin de las Listas Enlazadas


Listas Simplemente Enlazadas, cada nodo contiene un nico enlace que conecta ese nodo al

nodo siguiente o nodo sucesor. La lista es eficiente en recorridos directos (adelante).

Listas Doblemente Enlazadas, cada nodo contiene dos enlace, uno a su nodo predecesor y el otro a su nodo sucesor. La lista es eficiente tanto en recorrido directo (adelante) como en recorrido inverso (atrs).

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Clasificacin de las Listas Enlazadas


Lista Circular Simplemente Enlazada, es aquella en la que el ltimo elemento (cola de la

lista) se enlaza al primer elemento (cabeza de la lista), de tal modo que la lista puede ser
recorrida de modo circular (en anillo).

Lista Circular Doblemente Enlazada, tiene las caractersticas de las lista doblemente enlazadas y listas circulares. El ltimo nodo se enlaza o apunta a la cabeza de la lista, todos los nodos enlazan al nodo anterior y al siguiente.

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Operaciones en Listas Enlazadas


Una lista enlazada requiere unos controles para la gestin de los elementos contenidos en

ellas. Estos controles se manifiestan en forma de operaciones que tendrn las siguientes
funciones: Definicin de la clase Nodo y referencia a Nodo. Inicializacin o creacin. Insertar elementos en una lista. Eliminar elementos de una lista. Buscar elementos de una lista (comprobar la existencia de elementos en una lista). Recorrer una lista enlazada (visitar cada nodo de la lista). Comprobar si la lista est vaca.

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Pasos para la construccin de una lista


La creacin de una lista enlazada entraa la definicin de clases, que pueden

descomponerse en los siguientes pasos:

1. Definir la clase Nodo (opcionalmente, definir la clase Elemento). 2. Definir la clase Lista, con la variable instancia referencia a Nodo cabeza o primero. 3. Definir el mtodo constructor de Lista que inicialice primero a null, lista vaca. 4. Definir el mtodo CrearLista(), de tal forma que cree iterativamente el primer elemento (primero) y los elementos sucesivos de una lista enlazada simplemente. 5. Repetir hasta que no haya ms entrada para el elemento.

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Definicin de un nodo en Java


Una lista enlazada se compone de una serie de nodos enlazados mediante referencias. Cada nodo es una combinacin de dos partes: un tipo de dato (entero, real, doble, carcter o referencias) y un enlace (referencia) al siguiente nodo. En Java se puede definir un nuevo tipo de dato, una clase, para contener las dos partes citadas.
Class Nodo{ int info; Nodo siguiente;

public Nodo(int dato){


info = dato; siguiente = null; } }
Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Definicin de un nodo en Java


Dado que los tipo de datos que se puede incluir en una lista pueden ser de cualquier tipo (enteros, dobles, caracteres o cualquier objeto), con el fin de que el tipo de dato de cada nodo se pueda cambiar con facilidad, se puede definir una clase Elemento como una generalizacin del tipo de dato de cada campo, en cuyo caso se utiliza una referencia a Elemento dentro de la estructura de nodo, como se muestra a continuacin:
Class Elemento{ //

}
Class Nodo{ Elemento info; Nodo siguiente; }
Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Definicin de un nodo en Java


Package ListaEnteros; Public class Nodo{ int dato; Nodo enlace; public Nodo(int x){ dato = x; enlace = null; }

public Nodo(int x, Nodo n){


dato = x; enlace = n; } }
Elaborado por: Ing. Vctor Valencia.

El segundo constructor de Nodo enlaza el nodo creado con otro.

Unidad N V Listas Enlazadas

Definicin de una Lista en Java


El siguiente paso para construir la lista es definir la clase Lista con la variable instancia

primero que apuntar al primer elemento de la lista:


Public class Lista{ Private Nodo primero; public Lista(){ primero = null; } //..

La referencia primero (puede tener cualquier otro nombre representativo) se ha inicializado a un valor nulo, lo que implica que la lista est vaca (no tiene elementos).

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Definicin del mtodo CrearLista en Java


En el mtodo CrearLista() se aaden elementos a la lista, para ello hay que crear un nodo

con un valor correspondiente al campo dato y asignar dicho nodo a primero:


Public Lista CrearLista(){ primero = new Nodo(19);

19
Primero

null

La referencia primero apunta al nuevo elemento, que se inicializa a 19. El campo enlace del nuevo elemento toma el valor nulo, por no haber un nodo siguiente.

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Definicin del mtodo CrearLista en Java


La operacin de crear un nodo se puede hacer un mtodo al que se pasa el valor del campo

dato y del campo enlace. Si ahora se desea aadir un nuevo elemento con un valor 61, y
situarlo en el primer lugar de la lista, se escribe simplemente:
Primero = new Nodo(61, primero);

61
Primero

19

Null

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Ejercicio: Creacin iterativa de una lista

Public Lista CrearLista(){ Primero = null; for(int i = 0; i <= 5; i++){ Primero = new Nodo(i, primero); } return this;

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Ejercicio: Insertar elemento a la cabeza de la lista

public Lista InsertarCabezaLista(int dato){ Nodo nuevo; nuevo=new Nodo(dato); nuevo.siguiente = primero; primero = nuevo; return this;

Elaborado por: Ing. Vctor Valencia.

Unidad N V Listas Enlazadas

Ejercicio: Mostrar los elementos de una lista

public void MostrarLista(){ Nodo n; n = primero; System.out.println("Los valores que contiene la lista son:"); while(n != null){ System.out.println(n.info);

n = n.siguiente;
} }

Elaborado por: Ing. Vctor Valencia.

Fuentes
Joyanes, L., Zahonero, I. (2002). Programacin en Java 2. Madrid: McGrawHill.

Elaborado por: Ing. Vctor Valencia.

Das könnte Ihnen auch gefallen