1 / 23

ESTRUCTURA DE DATOS

ESTRUCTURA DE DATOS. LISTAS. OBJETIVO.

brent
Download Presentation

ESTRUCTURA DE DATOS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ESTRUCTURA DE DATOS LISTAS

  2. OBJETIVO Comprender el concepto de estructuras de datos listas para facilitar su manipulación 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.

  3. LISTA Concepto. Una lista es una estructura de datos homogénea y dinámica, que va a estar formada por una secuencia de elementos, donde cada uno de ellos va seguido de otro o de ninguno. Homogénea: Todos los elementos que la forman tienen el mismo tipo base. Dinámica: Puede crecer o decrecer en tiempo de ejecución según nuestras necesidades. dos listas pueden ser diferentes si: No tienen el mismo número de elementos: L1: gato, perro. L2: gato, canario, cerdo.

  4. Cuando, aun teniendo el mismo número de elementos, estos son distintos: L1: gato, perro. L2: gato, cerdo. Cuando, aun teniendo el mismo número de elementos y siendo estos los mismos, no están dispuestos en el mismo orden. L1: gato, perro. L2: perro, gato.

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

  6. La forma más sencilla de implementar una lista es hacer uso de un puntero que señale desde un dato al siguiente. También hay un puntero que señala 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.

  7. Una variación sobre la idea de una lista es el caso en el que el puntero del final de la lista señale al primer elemento. Esto crea lo que se denomina una lista circular. Si los elementos de la lista están en orden alfabético o numérico, dichas listas se conocen como listas ordenadas.

  8. Las operaciones más habituales son las siguientes: - añadir un elemento a la lista en cualquier posición de ésta. - eliminar un elemento de la lista de cualquier posición. - acceso al primer elemento de la lista. - acceso al siguiente elemento de la lista. - comprobar si la lista está o no vacía.

  9. CLASIFICACIÓN • Listas Ordenadas • Listas Enlazadas Lineales • Lista Simple Enlazada • Lista doblemente enlazada • Listas Enlazadas Circulares • Listas Enlazadas Circulares Simples • Lista Enlazada Doblemente Circular

  10. LISTAS ORDENADAS Las listas ordenadas son aquellas en las que la posición 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- estén en la lista en orden alfabético.

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

  12. PASOS 1.- Localizar el lugar correspondiente al elemento a insertar. Se utilizan dos punteros: anterior y actual, que garanticen la correcta posición 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 más complicada, porque hay que considerar la diferencia de insertar al principio, no importa si la lista está vacía, o insertar en otra posición. Se utilizan los tres punteros.

  13. LISTA SIMPLE ENLAZADA 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

  14. . 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 también el nombre de nodos de la lista.

  15. OPERADORES ASOCIADOS Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta inserción al principio o final de la lista o bien en orden. Eliminar: elimina un nodo de la lista, puede ser según la posición o por el dato. Buscar: busca un elemento en la lista. Localizar: obtiene la posición del nodo en la lista. Vaciar: borra todos los elementos de la lista

  16. LISTA DOBLEMENTE ENLAZADA Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. 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.

  17. LISTAS ENLAZADAS CIRCULARES En una lista enlazada circular, el primer y el último nodo están 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 dirección hasta que se regrese hasta el nodo original.

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

  19. LISTAS ENLAZADAS CIRCULARES SIMPLES 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 después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo.

  20. LISTAS ENLAZADAS DOBLEMENTE CIRCULAR 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 algún nodo cercano.

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

  22. CONCLUSIÓN La idea es ir avanzando desde el primer elemento hasta encontrar la lista vacía. Antes de acceder a la estructura lista es fundamental saber si esa estructura existe, es decir, que no está vacía.

  23. GRACIAS!!

More Related