Una de las aplicaciones ms interesantes y potentes de la memoria
dinmica y de los punteros son, sin duda, las estructuras dinmicas de datos. Las estructuras bsicas disponibles en C y C++ (structs y arrays) tienen una importante limitacin: No pueden cambiar de tamao durante la ejecucin. Los arrays estn compuestos por un determinado nmero de elementos, nmero que se decide en la fase de diseo, antes de que el programa ejecutable sea creado.
Las estructuras dinmicas nos permiten crear estructuras de datos
que se adapten a las necesidades reales a las que suelen enfrentarse nuestros programas. Pero no slo eso, como veremos, tambin nos permitir crear estructuras de datos muy flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen.
Las estructuras de datos dinmicas estn compuestas de otras
pequeas estructuras a las que llamaremos nodos o elementos, que agrupan los datos con los que trabajar nuestro programa y adems uno o ms punteros autoreferenciales, es decir, punteros a objetos del mismo tipo nodo.
Resumiendo, Las estructuras de datos dinmicas son aquellas cuyo
tamao (longitud, nmero de elementos...) vara en tiempo de ejecucin. Las ms famosas son: Listas enlazadas simples, Listas doblemente enlazadas, Pilas, Colas, rboles y Grafos.