unidad nº v listas enlazadas · pdf fileunidad nº v – listas enlazadas lista...

17
Instituto Universitario Politécnico “Santiago Mariño” Unidad Nº V Listas Enlazadas Elaborado por: Ing. Víctor Valencia.

Upload: trinhquynh

Post on 23-Feb-2018

245 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Instituto Universitario Politécnico

“Santiago Mariño”

Unidad Nº V – Listas Enlazadas

Elaborado por: Ing. Víctor Valencia.

Page 2: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Lista Enlazadas

Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

elemento se conecta al siguiente elemento por “enlace” o “referencia”. La idea básica

consiste en construir una lista cuyos elementos, llamados nodos, se componen de dos partes

o campos: la primera parte o campo contiene la información y es, por consiguiente, un valor

de un tipo genérico (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. Víctor Valencia.

Page 3: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Lista Enlazadas

Elaborado por: Ing. Víctor Valencia.

en

Diferentes representaciones gráficas del último nodo de una lista

en en null

Page 4: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Clasificación 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 (atrás).

Elaborado por: Ing. Víctor Valencia.

Page 5: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Clasificación 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 características 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. Víctor Valencia.

Page 6: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Operaciones en Listas Enlazadas

Una lista enlazada requiere unos controles para la gestión de los elementos contenidos en

ellas. Estos controles se manifiestan en forma de operaciones que tendrán las siguientes

funciones:

•Definición de la clase Nodo y referencia a Nodo.

•Inicialización o creación.

•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á vacía.

Elaborado por: Ing. Víctor Valencia.

Page 7: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Pasos para la construcción de una lista

La creación de una lista enlazada entraña la definición 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 método constructor de Lista que inicialice primero a null, lista vacía.

4. Definir el método 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 más entrada para el elemento.

Elaborado por: Ing. Víctor Valencia.

Page 8: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición de un nodo en Java

Una lista enlazada se compone de una serie de nodos enlazados mediante referencias. Cada

nodo es una combinación de dos partes: un tipo de dato (entero, real, doble, carácter 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. Víctor Valencia.

Page 9: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición 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

generalización 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 continuación:

Class Elemento{

//…

}

Class Nodo{

Elemento info;

Nodo siguiente;

}

Elaborado por: Ing. Víctor Valencia.

Page 10: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición 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. Víctor Valencia.

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

Page 11: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición 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;

}

//..

}

Elaborado por: Ing. Víctor Valencia.

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

Page 12: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición del método CrearLista en Java

En el método CrearLista() se añaden 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);

Elaborado por: Ing. Víctor Valencia.

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.

19 null

Primero

Page 13: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Definición del método CrearLista en Java

La operación de crear un nodo se puede hacer un método al que se pasa el valor del campo

dato y del campo enlace. Si ahora se desea añadir un nuevo elemento con un valor 61, y

situarlo en el primer lugar de la lista, se escribe simplemente:

Primero = new Nodo(61, primero);

Elaborado por: Ing. Víctor Valencia.

61 19 Null

Primero

Page 14: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Unidad Nº V – Listas Enlazadas

Ejercicio: Creación 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. Víctor Valencia.

Page 15: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

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. Víctor Valencia.

Page 16: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

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. Víctor Valencia.

Page 17: Unidad Nº V Listas Enlazadas · PDF fileUnidad Nº V – Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada

Fuentes

•Joyanes, L., Zahonero, I. (2002). Programación en Java 2. Madrid: McGrawHill.

Elaborado por: Ing. Víctor Valencia.