viernes, 19 de octubre de 2012

LISTAS


Definicion.

Una lista es una estructura de datos lineal que se puede representar
simbólicamente como un conjunto de nodos enlazados entre sí. Entre las listas se distinguen tres tipos:
listas simplementes ligadas, listas doblementes ligadas y listas circulares.
Una lista simplemente ligada constituye una coleccion de elementos llamados nodos. El orden entre estos se
establece por medio de punteros, es decir, direcciones o referencias a otros nodos.

Elementos de las listas simplementes ligadas.

Nodos. Es un objeto que guarda una referencia a un elemento y una referencia, llamado siguiente, a otro nodo.
Punteros. Establecen el orden entre los nodos

Operaciones con listas simplementes ligadas.

Busqueda. Comprueba si existe un determinado elemento en la lista.
Insercion. Consiste en la introducción de un nuevo elemento en la lista.
Eliminacion. La operación borrar consiste en la eliminación de la lista de un elemento concreto. El elemento a borrar será escogido por el programador.
Recorre. Recorre toda la lista, realizando una operación en cada nodo.

Algoritmo con listas simplementes ligadas.

Crea inicio.

{Este algoritmo permite crear una lista simplemente ligada, agregando cada nuevo nodo al inicio de la misma}
{P y Q son variables de tipo puntero. Los campos del nodo son INFO, que sera del tipo de datos que se quiera  almacenar en la lista, y la LIGA de tipo apuntador. P apunta al inicio de la lista. RES es una variable de tipo entero}


Crea final

{Este algoritmo permite crear una lista simplemente ligada, agregando cada nuevo nodo al final de la misma}
{P, Q y T son variables de tipo apuntador. Los campos del nodo son INFO, que sera del tipo de datos que se quiera almacenar al final de la lista, y LIGA de tipo apuntador. P apunta al inicio de la lista. RES es una
variable de tipo entero}


Recorrido iterativo.

Recorre_iterativo(P)
{Este algoritmo recorre una lista cuyo primer nodo esta apuntando por P}
{Q es una variable de tipo apuntador. INFO y LIGA son los campos de cada nodo de la lista}


Recorrido recursivo.

Recorre_recursivo(P)
{Este algoritmo recorre una lista simplemente ligada en forma recursiva. P es un apuntador al nodo que se va a visitar. La primera vez trae la direccion del primer nodo de la lista}
{INFO y LIGA son los campos de cada nodo de la lista}


Insercion al inicio.

Inserta_inicio(P,DATO)
{Este algoritmo inserta un nodo al inicio de una lista simplemente ligada. P es el apuntador al primer nodo de
la misma, y DATO es la informacion que se almacenara en el nuevo nodo}
{Q es una variable de tipo apuntador. INFO y LIGA son los campos de cada nodo de la lista}


Insercion al final

Inserta_final(P,DATO)
{Este algoritmo inserta un nodo al final de una lista simplemente ligada. P es el apuntador al primer nodo de
la lista, y DATO es la informacion que se almacenara en el nuevo nodo}
{Q y T son variables de tipo puntero. INFO y LIGA son los campos de cada nodo de la lista}


Insercion de un nodo antes que otro

Inserta_antes_X(P,DATO,X)
{Este algoritmo inserta un nodo antes de un nodo dado como referencia en una lista simplemente ligada. P es el apuntador al primer nodo de la lista, DATO indica la informacion que se almacenara en el nuevo nodo, y X representa el contenido -informacion- del nodo dado como referencia}
{Q, X y T son variables de tipo apuntador. INFO y LIGA son los campos de los nodos de la lista. BAND es una variable de tipo entero}


Insercion de un nodo despues de otro

Inserta_despues_X(P,DATO,X)
{Este algoritmo inserta un nodo despues de otro dado como referencia en una lista simplemente ligada. P es el apuntador al primer nodo de la lista, DATO indica la informacion que se almacenara en el nuevo nodo, y X representa el contenido  -informacion- del nodo dado como referencia}
{Q y T son variables de tipo apuntador. INFO y LIGA son los campos de los nodos de la lista. BAND es una variable de tipo entero}


Eliminar el primer nodo

Elimina_inicio(P)
{Este algoritmo permite eliminar el primer elemento de una lista simplemente ligada. P es el apuntador al primer nodo de la lista}
{Q es una variable de tipo apuntador. INFO y LIGA son los campos de los nodos de la lista}


Eliminar el ultimo nodo

Elimina_ultimo(P)
{Este algoritmo permite eliminar el ultimo elemento de una lista simplemente ligada. P es el apuntador al primer nodo de la lista}
{Q y T son variables de tipo apuntador. INFO y LIGA son los campos de los nodos de la lista}


Eliminar un nodo con informacion X

Elimina_X(P,X)
{Este algoritmo elimina un nodo con informacion X de una lista simplemente ligada. P es el apuntador al primer nodo de la lista}
{Q y T son variables de tipo apuntador. BAND en una variable de tipo entero, INFO y LIGA son los campos de los nodos de la lista}



Busqueda desordenada

Busqueda_desordenada(P,X)
{Este algoritmo permite buscar el elemento con informacion X en una lista simplemente ligada que se encuentra  desordenada. P es el apuntador al primer nodo de la lista}
{Q es una variable de tipo apuntador. INFO y LIGA son campos de los nodos de la lista}


Busqueda ordenada

Busqueda_ordenada(P,X)
{Este algoritmo permite buscar el elemento con informacion X en una lista simplemente ligada que se encuentra ordenada en forma ascendente. P es el apuntador al primer nodo de la lista}
{Q es una variable de tipo apuntador. INFO y LIGA son los campos de los nodos de la lista}


Busqueda de manera recursiva(P,X)

Busqueda_recursivo
{Este algoritmo permite buscar recursivamente a un elemento con informacion X en una lista simplemente ligada que se encuentra desordenada. P es el apuntador al primer elemento de la lista}


Aplicaciones.

Se puede señalar que las listas son muy utiles para aquellas aplicaciones donde se necesite dinamismo
en el crecimiento y reduccion de la estructura de datos usada para el almacenamiento de la informacion.

No hay comentarios:

Publicar un comentario