Está en la página 1de 2

Estructuras de Datos

6 de Marzo, 2014

Nodos!
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. En muchas ocasiones se necesitan estructuras que puedan cambiar de tamao durante la ejecucin del programa. Por supuesto, podemos crear arrays dinmicos, pero una vez creados, tu tamao tambin ser jo, y para hacer que crezcan o disminuyan de tamao, deberemos reconstruirlos desde el principio. 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 permitirn crear estructuras de datos muy exibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Las estructuras de datos 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. Una estructura bsica de un nodo para crear listas de datos seria: struct nodo { int dato; struct nodo *otronodo; }; El campo "otronodo" puede apuntar a un objeto del tipo nodo. De este modo, cada nodo puede usarse como un ladrillo para construir listas de datos, y cada uno mantendr ciertas relaciones con otros nodos. Para acceder a un nodo de la estructura slo necesitaremos un puntero a un nodo. Durante el presente curso usaremos grcos para mostrar la estructura de las estructuras de datos dinmicas. El nodo anterior se representar as: ! Nodo Las estructuras dinmicas son una implementacin de TDAs o TADs (Tipos Abstractos de Datos). En estos tipos el inters se centra ms en la estructura de los datos que en el tipo concreto de informacin que almacenan.!

Luis Guillermo Segovia Gaytn

Pgina !1

Estructuras de Datos

6 de Marzo, 2014

Dependiendo del nmero de punteros y de las relaciones entre nodos, podemos distinguir varios tipos de estructuras dinmicas. Enumeraremos ahora slo de los tipos bsicos: " " Listas abiertas: cada elemento slo dispone de un puntero, que apuntar al siguiente elemento de la lista o valdr NULL si es el ltimo elemento. " " Pilas: son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el ltimo en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que slo el elemento que est encima de la pila puede ser ledo, y slo pueden aadirse elementos encima de la pila. " " Colas: otro tipo de listas, conocidas como listas FIFO (First In, First Out: El primero en entrar es el primero en salir). Los elementos se almacenan en la, pero slo pueden aadirse por un extremo y leerse por el otro. " " Listas circulares: o listas cerradas, son parecidas a las listas abiertas, pero el ltimo elemento apunta al primero. De hecho, en las listas circulares no puede hablarse de "primero" ni de "ltimo". Cualquier nodo puede ser el nodo de entrada y salida. " " Listas doblemente enlazadas: cada elemento dispone de dos punteros, uno a punta al siguiente elemento y el otro al elemento anterior. Al contrario que las listas abiertas anteriores, estas listas pueden recorrerse en los dos sentidos. " " Arboles: cada elemento dispone de dos o ms punteros, pero las referencias nunca son a elementos anteriores, de modo que la estructura se ramica y crece igual que un rbol. " " nodos. Arboles binarios: son rboles donde cada nodo slo puede apuntar a dos

" " Arboles binarios de bsqueda (ABB): son rboles binarios ordenados. Desde cada nodo todos los nodos de una rama sern mayores, segn la norma que se haya seguido para ordenar el rbol, y los de la otra rama sern menores. " " Arboles AVL: son tambin rboles de bsqueda, pero su estructura est ms optimizada para reducir los tiempos de bsqueda. " " Arboles B: son estructuras ms complejas, aunque tambin se trata de rboles de bsqueda, estn mucho ms optimizados que los anteriores. " " Tablas HASH: son estructuras auxiliares para ordenar listas.

" " Grafos: es el siguiente nivel de complejidad, podemos considerar estas estructuras como rboles no jerarquizados. " " Diccionarios.

Luis Guillermo Segovia Gaytn

Pgina !2