Estructuras de Datos Dinmicas Estructuras de Datos MC

  • Slides: 13
Download presentation
Estructuras de Datos Dinámicas Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018

Estructuras de Datos Dinámicas Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018

FCC-BUAP MC Beatriz Beltrán Martínez • La mayoría de los lenguajes de programación permiten

FCC-BUAP MC Beatriz Beltrán Martínez • La mayoría de los lenguajes de programación permiten manejar dos tipos de almacenamiento de datos: • Memoria estática: Que es la que se maneja tradicionalmente, cuyas características son: 1. Se define explícitamente al declarar una variable, ya sea global o local. 2. El compilador genera automáticamente el espacio de memoria. 3. Se mantiene fija durante toda la vida de la variable. Primavera 2018 Memoria dinámica 48

FCC-BUAP MC Beatriz Beltrán Martínez • Memoria dinámica: Que permite crear o destruir espacios

FCC-BUAP MC Beatriz Beltrán Martínez • Memoria dinámica: Que permite crear o destruir espacios de memoria, según indicaciones del programador durante la ejecución del programa, y cuyas características son: 1. Utiliza una parte de la memoria principal denominada heap. 2. Apoya el uso eficiente de la memoria durante la ejecución. 3. Requiere de apuntadores que almacenen direcciones de memoria real. Primavera 2018 Memoria dinámica 49

 • Cada vez que se este reservando memoria esta debe ser liberada antes

• Cada vez que se este reservando memoria esta debe ser liberada antes de salir del programa. • Se debe tener cuidado de no perder los apuntadores. FCC-BUAP MC Beatriz Beltrán Martínez • Para reservar memoria se hace uso en lenguaje C de malloc y free. • Para reservar memoria se hace uso en lenguaje C++ de new y delete. Primavera 2018 Memoria dinámica 50

FCC-BUAP MC Beatriz Beltrán Martínez • Una lista ligada es un grupo de datos

FCC-BUAP MC Beatriz Beltrán Martínez • Una lista ligada es un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la organización no esta dada implícitamente por su posición en el arreglo. • En una lista ligada cada elemento es un nodo que contiene el dato y además una liga al siguiente dato. • Estas ligas son simplemente variables que contienen la(s) dirección(es) de los datos contiguos o relacionados Primavera 2018 Listas Ligadas 51

 • En una lista ligada se pueden realizar básicamente 4 operaciones: • Recorrer:

• En una lista ligada se pueden realizar básicamente 4 operaciones: • Recorrer: Moverse sobre los elementos de la lista, partiendo del inicio y llegando al final. • Insertar: Añadir elementos a la lista. • Eliminar: Quitar elementos de la lista. • Buscar: Verificar la existencia de un elemento dado dentro de la lista. FCC-BUAP MC Beatriz Beltrán Martínez • Para manejar una lista es necesario contar con un apuntador al primer elemento de la lista denominado "cabeza". Primavera 2018 Listas Ligadas 52

P info sig • Para referirse a datos almacenados se utiliza la notación: P^.

P info sig • Para referirse a datos almacenados se utiliza la notación: P^. info P^. sig MC Beatriz Beltrán Martínez FCC-BUAP • Se usará Crea_nodo(P) para indicar la asignación de memoria dinámica que es apuntada por P, esto es: Primavera 2018 Listas Ligadas 53

P info sig MC Beatriz Beltrán Martínez FCC-BUAP • Para indicar que el apuntador

P info sig MC Beatriz Beltrán Martínez FCC-BUAP • Para indicar que el apuntador sig anota a nulo (nada) se utiliza: Primavera 2018 Listas Ligadas • Y se denota por: P^. sig NULO 54

Primavera 2018 Lista Ligada Simple - Insertar 20 • Ahora si se inserta otro

Primavera 2018 Lista Ligada Simple - Insertar 20 • Ahora si se inserta otro dato, si este es menor, quedaría: P Cabeza 7 MC Beatriz Beltrán Martínez P Cabeza FCC-BUAP • Al inicio la cabeza = NULO. • Se inserta el primer dato, con lo cual: 20 55

P Cabeza 7 20 35 • Finalmente el caso más general, es insertar entre

P Cabeza 7 20 35 • Finalmente el caso más general, es insertar entre dos elementos de la lista, siendo este dato mayor al elemento que esté a la izquierda y menor que el dato que esté a la derecha. MC Beatriz Beltrán Martínez FCC-BUAP • Si el dato es mayor que todos los datos en la lista, queda: Primavera 2018 Insertar 56

Cabeza 7 FCC-BUAP Primavera 2018 • Quedando así: 20 35 P MC Beatriz Beltrán

Cabeza 7 FCC-BUAP Primavera 2018 • Quedando así: 20 35 P MC Beatriz Beltrán Martínez Insertar 29 57

Cabeza P Cabeza 7 20 29 35 FCC-BUAP MC Beatriz Beltrán Martínez • Si

Cabeza P Cabeza 7 20 29 35 FCC-BUAP MC Beatriz Beltrán Martínez • Si la cabeza = NULO, entonces marcar error. • Si la cabeza es el elemento a eliminar, el siguiente elemento ahora será la cabeza: Primavera 2018 Lista Ligada Simple - Eliminar 58

Cabeza 29 20 35 P • O bien, si es el último elemento en

Cabeza 29 20 35 P • O bien, si es el último elemento en la lista: MC Beatriz Beltrán Martínez FCC-BUAP • Cuando el elemento a eliminar esta en medio de la lista, quedaría: Primavera 2018 Eliminar Cabeza 20 29 35 59