Estructura de datos

De Wikipedia, la enciclopedia libre
Ejemplo de tabla de hash.

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 ]

  1. 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 .  
  2. 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 .  
  3. 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 .  
  4. ≪Data structure≫ . Encyclopaedia Britannica . 17 de abril de 2017 . Consultado el 6 de noviembre de 2018 .  
  5. 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 .  
  6. ≪Estructuras de datos dinamicas/Texto completo≫ .  
  7. ≪The GNU C Manual≫ . Free Software Foundation . Consultado el 23 de marzo de 2016 .  
  8. ≪Free Pascal: Reference Guide≫ . Free Pascal . Consultado el 23 de marzo de 2016 .  
  9. ≪Java tutorial. Trail: Collections≫ . Oracle . Consultado el 23 de marzo de 2016 .  

Vease tambien [ editar ]