ASIGNACIÓN DINÁMICA DE MEMORIA - LISTAS Y TABLAS







Listas y tablas dinámicas de variables.

En aquellas ocasiones en que se dispone de memoria suficiente para garantizar la creación de grandes bloques de memoria, podemos optar por el uso de estructuras lineales creadas y destruídas dinámicamente. Esto produce un rendimiento óptimo, aunque existan mayores riesgos debidos a fragmentación del cúmulo.


Listas y tablas de variables dinámicas.

Una posible aproximación al problema de las estructuras lineales reservadas dinámicamente consiste en crear listas estáticas de punteros, para después ir creando o destruyendo pequeños bloques de memoria cuyas direcciones se almacenarán en la lista mencionada. Esto supone un importante ahorro de memoria respecto al método anterior, manteniendo la posibilidad de recorrer la lista mediante un índice. También puede ser una forma interesante de acelerar los procedimientos de clasificación.


Listas y tablas dinámicas de variables dinámicas.

Una tercera forma de abordar el problema consiste en crear dinámicamente una lista de punteros. En los elementos de esa lista se irán almacenando, a medida que sea necesario,las direcciones de bloques de memoria empleados para almacenar información. Al ser dinámica la lista de punteros, se puede pensar en modificar su tamaño en caso necesidad. De este modo se tendrían las ventajas de rapidez de acceso asociadas a la lista estática de punteros y la flexibilidad derivada de una estructura dinámica, de dimensiones modificables mediante realloc().


Ejercicios propuestos



  1. Ejercicio 1105r01.- Se dispone de un archivo binario formado por registros de estructura conocida. Se pide crear una función capaz de leer los registros y almacenarlos en una lista lineal dinámica, cuyo puntero se proporcionará al que haga la llamada.

  2. Ejercicio 1105r02.- Se dispone de un archivo binario formado por registros de estructura conocida. Se pide crear una función capaz de leer los registros y almacenarlos en una lista lineal estática de N punteros, creada previamente.

  3. Ejercicio 1105r03.- Se dispone de un archivo binario formado por registros de estructura conocida. Se pide crear una función capaz de leer los registros y almacenarlos nodos cuyas direcciones se almacenarán en una lista lineal dinámica de punteros, creada dinámicamente.

  4. Ejercicio 1105r04.- Considérese una lista de obras de un autor fallecido. Construir una estructura de datos adecuada para almacenar sus referencias.

  5. Ejercicio 1105r05.- Considérese una lista de obras de un autor vivo. Construir una estructura de datos adecuada para almacenar sus referencias.

  6. Ejercicio 1105r06.- Una biblioteca necesita mantener listas de obras de distintos autores muertos. Construir una posible estructura de datos.

  7. Ejercicio 1105r07.- Una biblioteca necesita mantener listas de obras de distintos autores vivos. Construir una posible estructura de datos.

  8. Ejercicio 1105r08.- Crear una estructura de datos adecuada para almacenar el estado de una colección de cubos de Rubik.