124 Estructuras de datos
6.0.4 Clasificación de las estructuras de datos
Uno de los criterios por los que se puede clasificar las estructuras de datos organizadas en
memoria principal, tiene que ver con la posibilidad o no de variar su tamaño en algún paso del
algoritmo.
- Estructuras estáticas: conservan su tamaño, desde que empieza hasta que termina el al-
goritmo que las usa. El espacio que ocupan en memoria se fija antes que se ejecuten las acciones
y no existe ninguna, que le pueda ordenar al procesador alterar la cantidad de componentes, se
los use o no.
El tamaño de las estructuras estáticas no puede modificarse una vez definida, aunque no
necesariamente tiene que utilizarse toda la memoria reservada al inicio.
Hay distintas estructuras estáticas, cada una de las cuales responde a un formato general específi-
co. Vamos a estudiar algunas de ellas, que son usadas en todos los lenguajes de programación:
Registro, Arreglo y Cadena.- Estructuras dinámicas o flexibles: su tamaño puede crecer o
decrecer, durante la ejecución del algoritmo que las usa. El espacio que ocupan en memoria NO
puede ser predeterminado, depende de lo que se vaya necesitando para satisfacer los requerim-
ientos de la aplicación. Estas estructuras pueden soportar acciones especiales que, durante la
ejecución, permiten disponer de memoria adicional para ella o, por el contrario liberar la que se
le haya asignado.
El tamaño de las estructuras dinámicas podrá modificarse; teóricamente no hay límites a su
tamaño, salvo el que impone la memoria disponible en la computadora.
Entre estas estructuras podemos mencionar: Lista, Árbol, Grafo, etc.
Las estructuras de datos pueden ser clasificadas también, atendiendo al tipo de dato de sus
componentes.
- Estructuras homogéneas: organizan un conjunto de datos de igual tipo. Entre éstas encon-
tramos a los Arreglos y a las Cadenas (string).
Las podemos imaginar y representar gráficamente con cualquiera de los siguientes esquemas:
- Estructuras heterogéneas: organizan un conjunto de datos de distinto tipo. Entre éstas en-
contramos a los Registros. Las podemos imaginar y representar gráficamente con el siguiente
esquema:
125
Tipo de dato estructurado
Los lenguajes de alto nivel, para solucionar el problema de las distintas representaciones
internas de valores y de la organización de los datos correspondientes, nos brindan la posibilidad
de encuadrar los datos a procesar en un modelo preestablecido. En un sentido amplio, esto
implica imponer restricciones referidas a qué valores pueden tomar los datos, qué operaciones
se pueden realizar y qué propiedades los caracterizan. Por ejemplo: al declarar una variable M
numérica, se está determinando de qué forma se almacenarán sus posibles valores en cuanto a
cantidad de bytes y a la disposición de los bits en ellos (sea según la notación en punto fijo o
en punto flotante) y se está definiendo que la suma y la resta, entre otras, son operaciones a las
que se podrán someter los valores de M, no así la concatenación, pues no está definida para los
números.
Así es como los lenguajes definen a los tipos de datos. Casi todos incluyen en forma explícita,
una determinada notación para los distintos tipos correspondientes a datos simples, aunque no
todos usan la misma sintaxis (son los llamados tipos fundamentales, primitivos o estándares).Por
otro lado, estos mismos lenguajes, permiten al programador “inventar” tipos de datos adicionales,
normalmente combinando múltiples elementos de otros tipos. Se los denominan en forma
genérica como tipos de datos definidos por el usuario.Tradicionalmente, bajo esta denominación
los lenguajes tienen a una herramienta apropiada solamente para definir nuevos sistemas de
almacenamiento. No llegan a crear realmente, en toda su magnitud, un nuevo tipo de dato,
aunque así se los nombre, ya que estos lenguajes no cuentan con mecanismos que permitan
definir algún conjunto de operaciones a realizar con los valores del nuevo tipo. Por ejemplo: al
declarar una variable Z de un tipo especial previamente definido, solamente se está determinando
de qué forma se almacenarán los posibles valores de cada uno de sus componentes y no se
está previendo ninguna operación para Z como conjunto.Si bien, actualmente los lenguajes
contemplan la posibilidad de definir tipos de datos de una forma más completa, pues incluyen el
sistema de almacenamiento y las operaciones asociadas, en este libro trataremos sólo la forma
tradicional.Siendo las estructuras de datos un mecanismo sumamente útil para almacenar y
procesar conjuntos de datos en la memoria principal, resultan completamente apropiadas para
implementar con ellas algunos de estos tipos de datos particulares, especialmente diseñados
para la aplicación que se esté realizando. Se trata del denominado tipo de dato estructurado o
compuesto.
Un tipo de dato estructurado o compuesto es una forma general de describir bajo un único
nombre, a una estructura particular, pudiendo representar con él, a un lugar de memoria capaz
de alojar un conjunto de valores
Recordemos que, recién cuando se declara una variable se está identificando al lugar de memoria
que puede almacenar valores con determinadas características.Entonces, si al diseñar la solución
de un determinado problema, hubiera que manipular algún dato estructurado, habría que:
1
o
definir la estructura adecuada, identificándola como un tipo especial mediante un nombre
particular. Por ejemplo: registro R, registro dat, cadena meses, arreglo LOS, etc. y se describirán
sus componentes