Está en la página 1de 23

LISTAS

Comprender el concepto de estructuras de datos listas para facilitar su manipulacin y poder identificar los tipos de listas que existen, as como sus propiedades u operaciones que se realizan en ellas, poder interactuar con las mismas y hacer un buen uso de las estructuras de datos no solo de lista, si no de todas las estructuras que durante el curso hemos visto.

Concepto. Una lista es una estructura de datos homognea y dinmica, que va a estar formada por una secuencia de elementos, donde cada uno de ellos va seguido de otro o de ninguno. Homognea: Todos los elementos que la forman tienen el mismo tipo base. Dinmica: Puede crecer o decrecer en tiempo de ejecucin segn nuestras necesidades. dos listas pueden ser diferentes si: No tienen el mismo nmero de elementos: L1: gato, perro. L2: gato, canario, cerdo.

Cuando, aun teniendo el mismo nmero de elementos, estos son distintos: L1: gato, perro. L2: gato, cerdo. Cuando, aun teniendo el mismo nmero de elementos y siendo estos los mismos, no estn dispuestos en el mismo orden. L1: gato, perro. L2: perro, gato.

Los elementos de la lista pueden insertarse o eliminarse en cualquier punto de la misma, por lo que es menos restrictiva que una pila o una cola.

La forma ms sencilla de implementar una lista es hacer uso de un puntero que seale desde un dato al siguiente. Tambin hay un puntero que seala al primer elemento de la lista, mientras que para el ltimo se emplea un puntero nulo. Una estructura de este tipo se denomina lista encadenada. Cada elemento de la lista consiste en una parte de datos y un puntero.

Una variacin sobre la idea de una lista es el caso en el que el puntero del final de la lista seale al primer elemento. Esto crea lo que se denomina una lista circular. Si los elementos de la lista estn en orden alfabtico o numrico, dichas listas se conocen como listas ordenadas.

Las operaciones ms habituales son las siguientes: - aadir un elemento a la lista en cualquier posicin de sta. - eliminar un elemento de la lista de cualquier posicin. - acceso al primer elemento de la lista. - acceso al siguiente elemento de la lista. - comprobar si la lista est o no vaca.

CLASIFICACIN
Listas Ordenadas Listas Enlazadas Lineales Lista Simple Enlazada Lista doblemente enlazada Listas Enlazadas Circulares Listas Enlazadas Circulares Simples Lista Enlazada Doblemente Circular

Las listas ordenadas son aquellas en las que la posicin de cada elemento depende de su contenido. Por ejemplo, podemos tener una lista enlazada que contenga el nombre y apellidos de un alumno y queremos que los elementos -los alumnos- estn en la lista en orden alfabtico.

Cuando haya que insertar un nuevo elemento en la lista ordenada hay que hacerlo en el lugar que le corresponda, y esto depende del orden y de la clave escogidos.

1.- Localizar el lugar correspondiente al elemento a insertar. Se utilizan dos punteros: anterior y actual, que garanticen la correcta posicin de cada enlace. 2.- Reservar memoria para l (puede hacerse como primer paso). Se usa un puntero auxiliar (nuevo) para reservar memoria. 3.- Enlazarlo. Esta es la parte ms complicada, porque hay que considerar la diferencia de insertar al principio, no importa si la lista est vaca, o insertar en otra posicin. Se utilizan los tres punteros.

La lista enlazada nos permite almacenar datos de una forma organizada, en una lista enlazada, cada elemento apunta al siguiente excepto el ltimo que no tiene sucesor y el valor del enlace es null

. Por ello los elementos son registros que contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos de una lista, suelen recibir tambin el nombre de nodos de la lista.

Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta insercin al principio o

final de la lista o bien en orden. Eliminar: elimina un nodo de la lista, puede ser segn la posicin o por el dato. Buscar: busca un elemento en la lista. Localizar: obtiene la posicin del nodo en la lista. Vaciar: borra todos los elementos de la lista

Un tipo de lista enlazada ms sofisticado es la lista doblemente enlazada o lista enlazadas de dos vas. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el ltimo nodo.

En una lista enlazada circular, el primer y el ltimo nodo estn unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier direccin hasta que se regrese hasta el nodo original.

Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para dirigir buffers para ingerir datos, y para visitar todos los nodos de una lista a partir de uno dado.

Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del ltimo apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados despus de uno que ya tengamos referenciado. Por esta razn, es usual quedarse con una referencia solamente al ltimo elemento en una lista enlazada circular simple, esto nos permite rpidas inserciones al principio, y tambin permite accesos al primer nodo desde el puntero del ltimo nodo.

Cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al ltimo y el enlace siguiente del ltimo nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algn nodo cercano.

Estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que est en la cabeza o al nodo cola, y as mantener el orden tan bien como en una lista doblemente enlazada.

La idea es ir avanzando desde el primer elemento hasta encontrar la lista vaca. Antes de acceder a la estructura lista es fundamental saber si esa estructura existe, es decir, que no est vaca.