La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.

Presentaciones similares


Presentación del tema: "Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos."— Transcripción de la presentación:

1 Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos con su uso. Composición de una estructura dinámica. ¿Que es un nodo? ¿Qué es una lista? Lista densa Lista enlazada Representación gráfica. ¿Cabeza de una lista? Operaciones con Listas Inserción de elementos. Borrado de elementos. Recorrido de la lista. Ejercicios

2 Lista: estructura de datos secuencial. Se clasifican en dependencia de la forma de acceder al siguiente elemento: lista densa: la propia estructura determina cuál es el siguiente elemento de la lista. Su tamaño no cambia en la ejecución del programa, es estático. Ejemplo: un array o vector. lista enlazada: la posición del siguiente elemento de la estructura la determina el elemento actual. Es necesario almacenar al menos la posición de memoria del primer elemento. Además es dinámica, es decir, su tamaño cambia durante la ejecución del programa.

3 Una lista enlazada se puede definir recursivamente de la siguiente manera: una lista enlazada es una estructura vacía o un elemento de información y un enlace hacia una lista (a un nodo, el primero). Gráficamente se suele representar así:

4 Como se ha dicho anteriormente, pueden cambiar de tamaño, pero su ventaja fundamental es que son flexibles a la hora de reorganizar sus elementos; a cambio se ha de pagar una mayor lentitud a la hora de acceder a cualquier elemento. En la lista de la figura anterior se puede observar que hay dos elementos de información, x e y. Supongamos que queremos añadir un nuevo nodo, con la información p, al comienzo de la lista. Para hacerlo basta con crear ese nodo, introducir la información p, y hacer un enlace hacia el siguiente nodo, que en este caso contiene la información x. ¿Qué ocurre si quisiéramos hacer lo mismo sobre un vector?. En ese caso sería necesario desplazar todos los elementos de información "hacia la derecha", para poder introducir el nuevo elemento, una operación muy engorrosa.

5 Cabeza de la Lista: Como no puede existir una referencia lógica sobre todos los datos que contiene la lista, pues sus elementos están almacenados en áreas no contiguas de memorias entrelazados, necesitamos tener almacenado la dirección del primer elemento de la lista para identificar que ese el primer elemento de la misma y a partir de este podremos encontrar los restantes. El lugar donde almacenamos esta información lo llamaremos Cabeza de la Lista.

6 Operaciones con Listas: Inserción al comienzo de una lista: Es necesario utilizar una variable auxiliar, que se utiliza para crear el nuevo nodo mediante la reserva de memoria y asignación de la clave. Posteriormente es necesario reorganizar los enlaces, es decir, el nuevo nodo debe apuntar al que era el primer elemento de la lista y a su vez debe pasar a ser el primer elemento. Notar que al introducir al comienzo de la lista, los elementos quedan ordenados en sentido inverso al de su llegada. Existe la variante de insertar en orden arbitrario, cual puede complicar el proceso de inserción, para estos casos es mejor garantizar que la lista este ordenada.

7 Inserción por la cabeza: Sea la siguiente lista: x y z vacia cab Y queremos insertar la infomación, w, para eso creamos un nodo y lo insertamos al inicio de la lista w x y z vacia cab

8 Seudo código INICIO Leer W Pedir memoria para representar el dato, area apuntada por aux. aux -> dato = W aux -> siguiente = vacio Si cab = vacio entonces cab = aux sino aux -> siguiente = cab cab = aux FinSi aux = vacio FIN

9 Operaciones con Listas: Borrado de elementos: es un proceso similar a la inserción, que tiene dos variantes, o al inicio, con proceso similar al explicado, o en un lugar arbitrario, pues depende de la posición del nodo en donde se encuentra el elemento a eliminar, también para este último caso como es un caso complejo, es conveniente mantener para ese tipo de operaciones la lista ordenada.

10 Borrado por la cabeza: Sea la siguiente lista, donde queremos eliminar la información x: y z vacia x cab

11 Seudo código INICIO Si cab != vacio entonces aux = cab cab = cab -> siguiente Liberar memoria apuntada por aux aux = vacio FinSi FIN

12 Operaciones con Listas: Recorrido de una lista: 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. En el caso de estarlo o de no estar inicializada es posible que el programa falle y sea difícil detectar donde, y en algunos casos puede abortarse inmediatamente la ejecución del programa, lo cual suele ser de gran ayuda para la depuración.Como se ha dicho antes, la lista enlazada es una estructura recursiva, y una posibilidad para su recorrido es hacerlo de forma recursiva. Por el hecho de ser un proceso recursivo se utiliza un procedimiento para hacer el recorrido. Nótese como antes de hacer una operación sobre el elemento se comprueba si existe. Esta no es la única forma existe también la forma iterativa, que para mucho es la mas fácil de implementar y es la recomendable por muchos especialistas.

13 Recorrido de una lista: Sea la siguiente lista: x y z vacia cab p x y z

14 Seudo código INICIO Si cab != vacio entonces aux = cab mientras aux != vacio visitar a aux -> dato aux = aux -> siguiente FinMientras FinSi FIN

15 Ejercicios: Haga en seudocódigo un algoritmo que nos permita contar la cantidad de elementos positivos y negativos que contiene una lista enlazada. Haga en seudocódigo un algoritmo que nos permita calcular el elemento mayor entre los elementos que contiene una lista enlazada.


Descargar ppt "Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos."

Presentaciones similares


Anuncios Google