listas enlazadas

Download LISTAS ENLAZADAS

Post on 28-Dec-2015

9 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

Listas Enlazadas

Listas Enlazadas

GeneralidadesEs una coleccin lineal de elementos llamados nodos.Cada nodo se divide en 2 partes: la primera es la informacin asociada al elemento y la segunda el enlace o puntero al siguiente elemento de la lista

GeneralidadesA los componentes de un nodo se les llama tambin campos: el campo de valor y el campo de enlace.Al campo de enlace del ltimo nodo de la lista se le representa con la palabra null, tambin puede ser una barra inclinada o el smbolo elctrico de tierra.

GeneralidadesSe 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.

GeneralidadesA diferencia de una arreglo, el acceso a un elemento de una lista enlazada se realiza mediante el puntero (enlace).Mientras que en un arreglo los elementos estn continuos en la memoria, en una lista enlazada los elementos estn dispersosTipos de Listas EnlazadasLista enlazada simple

Lista doblemente enlazada

Lista circular

NotacionesL:Puntero externo al primer nodo de listaPtr:Puntero a un nodo de la listaPtr.Info:Campo dato del nodo apuntado por PtrPtr.Enlace:Campo puntero que apunta al sgt. Nodo

CrearNodo(aux):Asigna la direccin aux de un nodo

QuitarNodo(aux):Libera el espacio de memoria asignado a auxOperaciones (Mtodos)Creacin().- Inicializa la lista al estado vaco.Diseamos la clase cNodo con un campo de valor (tipo de dato) y otro campo de tipo cNodo que ser el enlace.

Diseamos 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 direccin en memoria).

Operaciones (Mtodos)ListaVaca().- Determinamos si la lista est vaca.Creamos el mtodo ListaEmpty() de tipo booleano para la clase cLista, donde verificamos si L apunta a null.

Recorrido():Accede y procesa cada elemento de la lista.Diseamos el mtodo vaco Recorre(), Ptr (auxiliar) apunta al nodo inicial, y si no esta vaco (no es el ltimo nodo) apunta al enlace del siguiente nodo.

Operaciones (Mtodos)PtrUtilizamos un puntero auxiliar(Ptr)Af100Am400Af100Am400

Operaciones (Mtodos)PtrAf100Am400Af100Am400

Operaciones (Mtodos)PtrAf100Am400Af100Am400

Insercin(): Aade un nuevo elemento al inicio de la lista.Diseamos en la clase cLista, el mtodo vaco Insert_Inicio(int item) con un parmetro 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 vaca, 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 vaca: *) L null

**) L

***)

Operaciones (Mtodos)auxiliarauxiliarOperaciones (Mtodos)

No est vaca:auxiliarL45564978L45564978Insercin(): Aade un nuevo elemento al final de la lista.Diseamos en la clase cLista, el mtodo vaco Insert_Final(int item) con un parmetro 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 vaca; 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 (Mtodos)Operaciones (Mtodos)No est vaca:

Ptr!=nullPtr!=nullauxiliarPtrEliminacin(): Elimina un elemento al inicio.Diseamos en la clase cLista, el mtodo vaco 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 vaca); de lo contrario L apuntar al siguiente enlace eliminando el nodo que se pueda encontrar en la cabecera.

Operaciones (Mtodos)

Eliminacin(): Elimina un elemento al final.Diseamos en la clase cLista, el mtodo vaco 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 vaca); 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 condicin sea falsa el enlace de la segunda variable apunta a null.

Operaciones (Mtodos)

Main

Recommended

View more >