You are on page 1of 16

Estructura de Datos

Ing. Manuel Guerra

Sesin 5

Listas
Memoria Dinamica: Listas Simples y Simples Circulares No hay limite de crecimiento En el momento que se necesita un espacio se solicita En el momento que se deja de usar la memoria se libera Busquedas mas rapidas.

La memoria dinmica evolucion y se Segmento en dos grupos: Lineales y No Lineales: Las Listas Simples y Dobles se encuentran catalogadas dentro de la Memoria Dinamica Lineal:

Introduccin a Listas
Las estructuras de datos (arreglos y registros) se denominan estticas. A lo largo de la ejecucin de un programa no pueden crearse ni destruirse, esto quiere decir que su espacio de memoria esta reservado desde el principio. Un nuevo concepto: El de estructuras dinmicas de datos. Este tipo de estructuras es generado a partir de un tipo de dato conocido con el nombre de puntero, apuntador, liga de referencia.

Introduccin a Listas
Un dato de tipo puntero almacena una direccin de memoria referencia a un dato propiamente dicho. Por lo tanto debe distinguirse claramente entre un dato puntero y el dato al cual este apunta.
La principal ventaja de manejar este tipo de datos es que se pueden adquirir posiciones de memoria a medida que se necesitan, y liberarlas cuando ya no se requieren.

Concepto de Listas
Una lista es una coleccin de elementos llamados generalmente nodos. El orden entre los nodos se establece por medio de punteros, es decir direcciones o referencias a otros nodos.

Cuentan con un campo de INFORMACION que ser del tipo de dato que se quiera almacenar en la lista.

Concepto de Listas

Cuentan con un campo LIGA, de tipo puntero, que se utiliza para establecer la liga el enlace con otro nodo de la lista.

Si el nodo fuera el ultimo de la lista, este campo tendr como valor : NIL NULL (VACIO).
Al emplearse el campo liga para relacionar dos nodos, no ser necesario almacenar fsicamente a los nodos en espacios contiguos.

Representacin
NODO

Datos Informacin Almacenada

Apuntador hacia el siguiente nodo

NODO

NODO

NODO

LISTA

Operaciones
Recorrido de la lista Visitar el primer nodo de la lista y recorrer al siguiente nodo hasta que este sea el ultimo.
La operacin de recorrido consiste en visitar cada uno de los nodos que forman la lista. Para recorrer todos los nodos de una lista se comienza con el primero, y se avanza por medio de su liga al siguiente nodo. Inicio

fin

Operaciones
Insercin de un elemento Agregar un elemento en la lista, al principio al final, dependiendo de la definicin que se decidio trabajar.
Se pueden dar tres posibilidades Insertar un nodo al inicio de la lista El nuevo nodo se coloca al principio de la lista, convirtindose en el primero de la misma. Insertar un nodo al final de la lista El nuevo nodo se coloca al final de la lista, convirtindose en el ultimo de la misma. Insertar un nodo antes/despus que otro en la lista El nuevo nodo se coloca antes (despus) de otro nodo dado como referencia.

Operaciones
Borrado de un Elemento Consiste en quitar un nodo de la lista, redefiniendo las ligas que correspondan y liberando la memoria ocupada.

Eliminar el primer nodo Se quita el primer nodo de la lista, redefiniendo el valor del puntero al nuevo inicio.
Eliminar el ultimo nodo Se quita el ultimo nodo de la lista, redefiniendo a NIL el campo LIGA de su predecesor. Para alcanzar el ultimo nodo se deber recorrer previamente toda la lista, excepto si se usara un puntero indicando el final de la misma.

Operaciones
Borrado de un Elemento Eliminar un nodo con informacin X Se debe realizar una bsqueda del nodo que contenga la informacin dada como referencia (X) y eliminarlo, estableciendo la liga correspondiente entre su predecesor y su sucesor. Eliminar el nodo anterior/posterior al nodo con informacin X Dado un nodo como referencia, se debe eliminar su predecesor o su sucesor, estableciendo las ligas correspondientes.

Operaciones
Bsqueda de un Elemento.
La bsqueda se debe realizar en modo secuencial, posicionndonos en el primer nodo de la lista y se avanza nodo a nodo, comparando el dato buscado en cada una de la visitas realizadas. La forma de llegar de un nodo a otro es avanzando en base al apuntador liga que se tiene.

Al llegar al ultimo nodo de la lista se tendra este apuntando a NIL y por lo mismo no podra continuar el recorrido, en este caso el elemento buscado no se encuentra.

Ejemplo
Creacin de Lista, recibe los valores 1, 3, 11, 7, 26, 34: Al llegar 1 Al Llegar 3 Al Llegar 11

Al llegar 7
Al llegar 26

Al llegar 34
Lista Final Inicio Final

Ejemplo
En la lista anterior: Se elimina el nodo con el numero 11 Siempre antes de eliminar, se debe referenciar el nodo anterior al siguiente, luego se elimina

Se inserta 11 despues del 7 Nuevo nodo apunta al siguiente Luego el anterior, apunta al nuevo
Nueva Lista Final

Listas Simples Circulares


Inicio

Lo unico que cambia es que el ultimo nunca tendra referencia hacia NIL NULL, ya que nunca llegara al final, siempre referenciara al primero

Listas - Preguntas
Puntos a considerar: Si se pierde el primer nodo inicio de una lista, se perdio toda la lista, no se podra volver a llegar a ella. Antes de eliminar un nodo, siempre debe direccionarse las ligas antes de la eliminacin. Antes de insertar un nodo, siempre debe direccionarse las ligas antes de la insercin. Tarea: Elabore un programa que permita la creacion de una lista simple, replique el ejemplo visto el clase. Recuerde siempre que no debe perder el primer nodo, perdera toda su lista.

You might also like