En
ciencias de la computacion
, una
estructura de datos
[
1
]
es una forma particular de organizar informacion en un computador para que pueda ser utilizada de manera eficiente.
[
2
]
[
3
]
[
4
]
Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de
aplicaciones
, y algunos son altamente especializados para tareas especificas.
Las estructuras de datos son medios para manejar grandes cantidades de informacion de manera eficiente para usos tales como grandes
bases de datos
y servicios de
indizacion
de
Internet
. Por lo general, las estructuras de datos eficientes son clave para disenar
algoritmos
eficientes. Algunos metodos formales de diseno de lenguajes de programacion destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organizacion en el
diseno de software
. Mas precisamente, una estructura de datos es una coleccion de valores, las relaciones entre ellos y las funciones y operaciones que se pueden aplicar a los datos,
[
5
]
es decir, es una
estructura algebraica
de
datos
.
Descripcion
[
editar
]
Las estructuras de datos se basan generalmente en la capacidad de un
ordenador
para
recuperar
y
almacenar datos
en cualquier lugar de su
memoria
.
Tipos de estructura de datos
[
editar
]
Las estructuras de datos pueden ser de diferentes tipos, dependiendo de la tecnica que se utilice para su almacenamiento y recuperacion, estos tipos son los siguientes:
- Estructura de datos estatica.
- Estructura de datos dinamica
[
6
]
.
Segun la secuencia que se presenta entre cada elemento al momento de realizar el recorrido entre los elementos de la estructura de datos, esta se puede clasificar en los siguientes tipos:
- Estructura de datos lineal.
- Estructura de datos no lineal.
Ejemplos
[
editar
]
Existen numerosos tipos de estructuras de datos, generalmente construidas sobre otras mas simples:
- Un
vector
es una serie de elementos en un orden especifico, por lo general todos del mismo tipo (si bien los elementos pueden ser de casi cualquier tipo). Se accede a los elementos utilizando un entero como indice para especificar el elemento que se requiere. Las implementaciones tipicas asignan palabras de memoria contiguas a los elementos de los arreglos (aunque no siempre es el caso). Los arreglos pueden cambiar de tamano o tener una longitud fija.
- Un
vector asociativo
(tambien llamado
diccionario
o
mapa
) es una variante mas flexible que una matriz, en la que se puede anadir y eliminar libremente pares nombre-valor. Una
tabla de hash
es una implementacion usual de un arreglo asociativo.
- Un
registro
(tambien llamado
tupla
o
estructura
) es una estructura de datos agregados. Un registro es un valor que contiene otros valores, tipicamente en un numero fijo y la secuencia y por lo general un indice por nombres. Los elementos de los registros generalmente son llamados
campos
o
celdas
.
- Una
union
es una estructura de datos que especifica cual de una serie de tipos de datos permitidos podra ser almacenada en sus instancias, por ejemplo
flotante
o
entero largo
. En contraste con un registro, que se podria definir para contener un
flotante
y un
entero largo
, en una union solo hay un valor a la vez. Se asigna suficiente espacio para contener el tipo de datos de cualquiera de los miembros.
- Un
tipo variante
(tambien llamado
registro variante
o
union discriminada
) contiene un campo adicional que indica su tipo actual.
- Un
conjunto
es un tipo de datos abstracto que puede almacenar valores especificos, sin orden particular y sin valores duplicados.
- Un
multiconjunto
es un tipo de datos abstracto que puede almacenar valores especificos, sin orden particular. A diferencia de los conjuntos, los multiconjuntos admiten repeticiones.
- Un
grafo
es una estructura de datos conectada compuesta por nodos. Cada
nodo
contiene un valor y una o mas referencias a otros nodos. Los grafos pueden utilizarse para representar redes, dado que los nodos pueden referenciarse entre ellos. Las conexiones entre nodos pueden tener direccion, es decir un nodo de partida y uno de llegada.
- Un
arbol
es un caso particular de grafo dirigido en el que no se admiten ciclos y existe un camino desde un nodo llamado raiz hasta cada uno de los otros nodos. Una coleccion de arboles es llamada un bosque.
- Una
clase
es una plantilla para la creacion de objetos de datos segun un modelo predefinido. Las clases se utilizan como representacion abstracta de conceptos, incluyen campos como los registros y operaciones que pueden consultar el valor de los campos o cambiar sus valores.
Soporte en los lenguajes
[
editar
]
La mayoria de los
lenguajes ensambladores
y algunos
lenguajes de bajo nivel
, tales como
BCPL
, carecen de soporte de estructuras de datos. En cambio, muchos
lenguajes de alto nivel
y algunos lenguajes ensambladores de alto nivel, tales como
MASM
, tienen algun tipo de soporte incorporado para ciertas estructuras de datos, tales como los registros y arreglos. Por ejemplo, los lenguajes
C
y
Pascal
soportan estructuras y registros, respectivamente, ademas de arreglos y matrices multidimensionales.
[
7
]
[
8
]
La mayoria de los lenguajes de programacion disponen de algun tipo de
biblioteca
o mecanismo que permita el uso de estructuras de datos en los programas. Los lenguajes modernos por lo general vienen con bibliotecas estandar que implementan las estructuras de datos mas comunes. Ejemplos de ello son la biblioteca
Standard Template Library
de
C++
, las
colecciones de Java
[
9
]
y las bibliotecas
.NET
de
Microsoft
.
Estructuras de datos en programacion
[
editar
]
En
programacion
, una estructura de datos puede ser declarada inicialmente escribiendo una
palabra reservada
, luego un identificador para la estructura y un nombre para cada uno de sus miembros, sin olvidar los tipos de datos que estos representan. Generalmente, cada miembro se separa con algun tipo de operador,
caracter
o
palabra reservada
.
En el
lenguaje de programacion Pascal
, es posible crear una estructura de datos de la forma mencionada. La sintaxis basica es:
Estruct
Identificador, _
Miembro1:TipoDeDato, _
Miembro2:TipoDeDato, _
...
Miembro9:TipoDeDato
Para acceder a los miembros de una estructura, primero se debe crear una referencia a esta, generalmente con una variable de tipo; luego se pueden editar y obtener los datos de los miembros libremente.
Estruc
Estructura,Miembro1:Entero,Miembro2:Cadena,Miembro3:Byte
Var
Variable:Estructura
Variable.Miembro1 = 40000
Variable.Miembro2 = "Hola Mundo"
Variable.Miembro3 = 255
Mensaje(Variable.Miembro2) ' Muestra "Hola Mundo"
Referencias
[
editar
]
- ↑
Pelaez, Canek (2018). Facultad de Ciencias, ed.
Estructuras de datos con Java moderno. Comportamiento + objetos = programas
. Ciudad de Mexico: Universidad Nacional Autonoma de Mexico.
ISBN
978-607-30-0966-9
.
- ↑
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009).
Introduction to Algorithms, Third Edition
(3rd edicion). The MIT Press.
ISBN
978-0262033848
.
- ↑
Black, Paul E. (15 de diciembre de 2004).
≪data structure≫
. En Pieterse, Vreda; Black, Paul E., eds.
Dictionary of Algorithms and Data Structures [online]
.
National Institute of Standards and Technology
. Consultado el 6 de noviembre de 2018
.
- ↑
≪Data structure≫
.
Encyclopaedia Britannica
. 17 de abril de 2017
. Consultado el 6 de noviembre de 2018
.
- ↑
Wegner, Peter; Reilly, Edwin D. (29 de agosto de 2003).
Encyclopedia of Computer Science
. Chichester, UK: John Wiley and Sons. pp. 507-512.
ISBN
978-0470864128
.
- ↑
≪Estructuras de datos dinamicas/Texto completo≫
.
- ↑
≪The GNU C Manual≫
.
Free Software Foundation
. Consultado el 23 de marzo de 2016
.
- ↑
≪Free Pascal: Reference Guide≫
.
Free Pascal
. Consultado el 23 de marzo de 2016
.
- ↑
≪Java tutorial. Trail: Collections≫
.
Oracle
. Consultado el 23 de marzo de 2016
.
Vease tambien
[
editar
]