1 Alojamiento dinamico de estructuras de datos.

Los arreglos tienen una importante limitación, no pueden cambiar de tamaño durante su ejecución. Los arreglos están compuestos por un determinado número de elementos,  el cual se define en la fase de diseño, antes que el programa ejecutable sea creado.

En los casos que se necesitan estructuras que puedan cambiar de tamaño durante la ejecución, existen las estructuras dinámicas de datos, estas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que solemos enfrentarnos.

Las estructuras de datos dinámicas están compuestas de otras pequeñas estructuras llamadas nodos o elementos, que agrupan los datos con los que trabajará nuestro programa y ademas uno o mas punteros referenciados a objetos del mismo tipo nodo. Dependiendo del número de apuntadores y de las enlazado entre nodos, se pueden distinguir varios tipos de estructuras dinamicas.

2 Enlazado de estructuras de datos.

- Listas abiertas
cada elemento solo dispone de un puntero, que apuntará al siguiente elemento de la lista, o si es el último valdrá null.

-Stacks (pilas)
son un tipo especial de lista, conocidas como listas "Last in, First Out" el último en entras es el primero en salir. Ejemplo: pila de platos.

-Queues (colas)
estas listas son conocidas por "First in, First Out", el primero en entrar es el primero en salir. Ejemplo: fila de las tortillas.

-Listas circulares o listas cerradas
son parecidas a las abiertas, pero el último elemento apunta al primero, no existe primero o último, cualquier nodo puede ser el de entrada o salida.

-Listas doblemente enlazadas
cada elemento dispone de dos apuntadores, uno apunta al siguiente elemento y el otro al anterior. Al contrario de las listas ordenadas, estas pueden recorrerse en los dos sentidos.

-Árboles
cada elemento dispone de dos o más apuntadores, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramifica y crece igual a un árbol.

-Árboles binarios
son árboles donde cada nodo sólo puede apuntar a dos nodos.

-Árboles binarios de búsqueda (ABB)
son árboles binarios ordenados. Desde cada nodo todos los nodos de una rama serán mayores, según la norma que se haya seguido para ordenar el árbol, y los de la otra rama serán menores.

-Árboles AVL
son también árboles de búsqueda, pero su estructura está más optimizada para reducir los tiempos de búsqueda.

-Árboles B
son estructuras más complejas, aunque también se trata de árboles de búsqueda, están mucho más optimizados que los anteriores.

-Tablas HASH
son estructuras auxiliares para ordenar listas.

-Grafos
es la siguiente nivel de complejidad, podemos considerar estas estructuras como árboles no jerarquizados.

-Diccionarios.

3 Desarrollo de algoritmos modulares basados en estructuras de datos.