Una estructura de datos en ciencias de la computación es una forma de almacenar datos
en una computadora para que puedan usarse de manera eficiente. Es una organización
de conceptos matemáticos y lógicos de datos. A menudo, una
estructura de datos cuidadosamente elegida
permitirá utilizar el
algoritmo
más
eficiente . La elección de la estructura de datos a menudo comienza con la
elección de un tipo de datos abstracto. Una estructura de datos bien diseñada permite realizar
una variedad de operaciones críticas, utilizando la menor cantidad de
recursos, tanto tiempo de ejecución como espacio de memoria, como sea posible. Las
estructuras de datos
se implementan mediante un
lenguaje de programación como tipos de datos y las
referenciasy operaciones que brindan.
Diferentes tipos de estructuras de datos se adaptan a diferentes tipos de
aplicaciones, y algunas son muy especializadas para determinadas tareas. Por
ejemplo,
los árboles B son particularmente adecuados para la implementación de bases de datos, mientras que las redes de máquinas dependen de las tablas de enrutamiento para funcionar.
En el diseño de muchos tipos de programas informáticos, la elección de las
estructuras de datos
es una consideración primordial del diseño. La experiencia en la construcción de
grandes sistemas ha demostrado que la dificultad de implementación y la
calidad y el rendimiento del resultado final dependen en gran medida de la elección de
la mejor estructura de datos. Una vez elegidas las estructuras de datos,
Los algoritmos que se utilizan a menudo se vuelven relativamente obvios. A veces, las cosas
funcionan en la dirección opuesta: las estructuras de datos se eligen porque
ciertas tareas clave tienen algoritmos que funcionan mejor con
estructuras de datos particulares
. En cualquier caso, la elección de estructuras de datos adecuadas
es crucial.
Esta idea ha dado lugar a muchos métodos de diseño formalizados y
lenguajes de programación en los que las estructuras de datos, en lugar de los algoritmos,
son el factor organizativo clave. La mayoría de los lenguajes cuentan con algún tipo de
sistema de
módulos, lo que permite que las estructuras de datos se reutilicen de forma segura en
diferentes aplicaciones al ocultar sus detalles de implementación verificados
detrás de interfaces controladas.
Los lenguajes de programación orientados a objetos como C ++ y
Java en particular usan
clases para este propósito.
Dado que las estructuras de datos son tan cruciales, muchas de ellas están incluidas en bibliotecas estándar de lenguajes de programación modernos y
API , como los
contenedores de C ++
,
Java Collections Framework y Microsoft
.NET Framework .
Los bloques de construcción fundamentales de la mayoría de las estructuras de datos son matrices,
registros ,
uniones discriminadas y
referencias .
Por ejemplo, la referencia que acepta valores NULL, una referencia que puede ser nula, es
una combinación de referencias y uniones discriminadas, y la
estructura de datos vinculados más simple
, la lista vinculada, se crea a partir de registros y
referencias que aceptan valores NULL.
Las estructuras de datos representan implementaciones o
interfaces :
una estructura de datos puede verse como una interfaz entre dos funciones o
como una implementación de métodos para acceder al almacenamiento que está organizado de
acuerdo con el tipo de datos asociado