listas enlazadas

19
Listas Enlazadas

Upload: jose-chipana-ramos

Post on 28-Dec-2015

18 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: LISTAS ENLAZADAS

Listas Enlazadas

Page 2: LISTAS ENLAZADAS

GeneralidadesO Es una colección lineal de elementos

llamados nodos.O Cada nodo se divide en 2 partes: la

primera es la información asociada al elemento y la segunda el enlace o puntero al siguiente elemento de la lista

Page 3: LISTAS ENLAZADAS

GeneralidadesO A los componentes de un nodo se les

llama también campos: el campo de valor y el campo de enlace.

O Al campo de enlace del último nodo de la lista se le representa con la palabra null, también puede ser una barra inclinada o el símbolo eléctrico de tierra.

Page 4: LISTAS ENLAZADAS

GeneralidadesO Se cuenta con un acceso inicial que

apunta a un elemento de la lista, el cual puede reconocerse como el primero y el orden está dado por los enlaces de cada elemento que apunta al que le sigue.

Page 5: LISTAS ENLAZADAS

GeneralidadesO A diferencia de una arreglo, el acceso a

un elemento de una lista enlazada se realiza mediante el puntero (enlace).

O Mientras que en un arreglo los elementos están continuos en la memoria, en una lista enlazada los elementos están dispersos

Page 6: LISTAS ENLAZADAS

Tipos de Listas Enlazadas1) Lista enlazada simple

2) Lista doblemente enlazada

3) Lista circular

Page 7: LISTAS ENLAZADAS

NotacionesO L :Puntero externo al primer nodo

de listaO Ptr :Puntero a un nodo de la listaO Ptr.Info :Campo dato del nodo apuntado

por PtrO Ptr.Enlace :Campo puntero que apunta al

sgt. Nodo

O CrearNodo(aux):Asigna la dirección aux de un nodo

O QuitarNodo(aux):Libera el espacio de memoria asignado a aux

Page 8: LISTAS ENLAZADAS

Operaciones (Métodos)1) Creación().- Inicializa la lista al estado

vacío.a) Diseñamos la clase cNodo con un campo

de valor (tipo de dato) y otro campo de tipo cNodo que será el enlace.

b) Diseñamos la clase cLista con campo de tipo cNodo que es el acceso inicial a la lista y un constructor que asigne a null su estado (L apunta a null, no tiene una dirección en memoria).

Page 9: LISTAS ENLAZADAS

Operaciones (Métodos)2) ListaVacía().- Determinamos si la lista está

vacía.a) Creamos el método ListaEmpty() de tipo booleano

para la clase cLista, donde verificamos si L apunta a null.

3) Recorrido():Accede y procesa cada elemento de la lista.

a) Diseñamos el método vacío Recorre(), Ptr (auxiliar) apunta al nodo inicial, y si no esta vacío (no es el último nodo) apunta al enlace del siguiente nodo.

Page 10: LISTAS ENLAZADAS

Operaciones (Métodos)

Ptr

Utilizamos un puntero

auxiliar(Ptr)

Af100 Am400

Af100 Am400

Page 11: LISTAS ENLAZADAS

Operaciones (Métodos)

Ptr

Af100 Am400

Af100 Am400

Page 12: LISTAS ENLAZADAS

Operaciones (Métodos)

Ptr

Af100 Am400

Af100 Am400

Page 13: LISTAS ENLAZADAS

4) Inserción(): Añade un nuevo elemento al inicio de la lista.

a) Diseñamos en la clase cLista, el método vacío Insert_Inicio(int item) con un parámetro item de tipo entero, declaramos una variable auxiliar de tipo cNodo a la cual le colocamos el valor del nuevo item (nuevo nodo). Verificamos si la lista está vacía, de estarlo, L que apuntaba a null apunta ahora al auxiliar (que se convierte en el primer elemento de la lista) y el enlace del auxiliar apunta a null, de lo contrario, el enlace del auxiliar apunta a L y L apunta al auxiliar.

Está vacía: *) L null

**) L

***)

Operaciones (Métodos)

auxiliar

auxiliar

Page 14: LISTAS ENLAZADAS

Operaciones (Métodos)No está vacía:

auxiliar

L 45 56 49

78

L 45 56 4978

Page 15: LISTAS ENLAZADAS

5) Inserción(): Añade un nuevo elemento al final de la lista.

a) Diseñamos en la clase cLista, el método vacío Insert_Final(int item) con un parámetro item de tipo entero, declaramos una variable auxiliar de tipo cNodo a la cual le colocamos el valor del nuevo item (nuevo nodo). Verificamos si la lista está vacía; de estarlo, L que apuntaba a null apunta ahora al auxiliar (que se convierte en el primer elemento de la lista) y el enlace del auxiliar apunta a null, de lo contrario, verificamos si los enlaces son diferentes de null los recorremos y cuando encontramos el último el Ptr apunta al auxiliar y el enlace del auxiliar apunta a null.

Operaciones (Métodos)

Page 16: LISTAS ENLAZADAS

Operaciones (Métodos)No está vacía:

Ptr

!=null

Ptr

!=null

auxiliar

Ptr

Page 17: LISTAS ENLAZADAS

6) Eliminación(): Elimina un elemento al inicio.a) Diseñamos en la clase cLista, el método vacío

Eliminar_Iniciol(), declaramos una variable auxiliar de tipo cNodo (nuestro puntero Ptr) y apuntamos a L. Verificamos si el enlace de L es igual a null, de serlo L apunta a null (queda vacía); de lo contrario L apuntará al siguiente enlace eliminando el nodo que se pueda encontrar en la cabecera.

Operaciones (Métodos)

Page 18: LISTAS ENLAZADAS

6) Eliminación(): Elimina un elemento al final.a) Diseñamos en la clase cLista, el método vacío Eliminar_Final(),

declaramos una variable auxiliar de tipo cNodo (nuestro puntero Ptr) y otra variable del mismo tipo, Ptr apunta a L. Verificamos si el enlace de L es igual a null(es el último nodo), de serlo L apunta a null (queda vacía); de lo contrario mientras el enlace de Ptr(el siguiente nodo) sea diferente de null, la segunda variable apunta a Ptr y Ptr apunta al enlace del siguiente nodo, una vez que la condición sea falsa el enlace de la segunda variable apunta a null.

Operaciones (Métodos)

Page 19: LISTAS ENLAZADAS

Main