Estructuras de datos

En programación, una **estructura de datos** es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente.

Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas.

Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos eficientes. Algunos métodos formales de diseño y lenguajes de programación destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organización en el diseño de software.

Estructura de Datos Lineales:
Existen tres estructuras lineales especialmente importantes:
1.-Las pilas
2.-Las colas
3.-Las listas
Su importancia radica en que son muy frecuentes en los esquemas algorítmicos.
Las operaciones básicas para dichas estructuras son:
    • Crear la secuencia vacía
    • Añadir un elemento a la secuencia
    • Borrar un elemento a la secuencia
    • Consultar un elemento de la secuencia
    • Comprobar si la secuencia está vacía
La diferencia entre las tres estructuras vendrá dada por la posición del elemento a añadir, borrar y consultar:
    • Pilas: Las tres operaciones actúan sobre el final de la secuencia
    • Colas: Se añade por el final y se borra y consulta por el principio
    • Listas: Las tres operaciones se realizan sobre una posición privilegiada de la secuencia, la cual puede desplazarse

Estructura de Datos No Lineales:
Se caracteriza por no existir una relación de sus elementos es decir que un elemento puede estar con cero uno o mas elementos.
Las estructuras no lineales de datos mas general son los árboles donde no existe ninguna relación de orden Predefinida.
Esta estructura se usa principalmente para representar datos con una relación jerárquica entre sus elementos, como por ejemplo registros, árboles genealógicos y tablas de contenidos.

Estructura de Datos Estaticas:
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple  hace referencia a un único valor a la vez, dentro de este grupo  de datos se encuentra:
a)Enteros
b)Reales
c)Caracteres
d)Boléanos
e)Enumerados
f)Subrangos
Nota:Los últimos no existen en algunos lenguajes de programación.

Estructura de Datos Dinamicas:
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria.
Es decir un dato estructurado tiene varios componentes.

CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS:
ESTRUCTURAS DE DATOS ESTÁTICAS
   1.- Simples o primíticas
       a) Boolean
       b) Char
       c) Integer
       d) Real
   2.- Compuestas
       a) Arreglos
       b) Conjuntos
       c) Strings
       d) Registros
       e) Archivos
ESTRUCTURA DE DATOS DINAMICAS
   1.- Lineales
       a) Pila
       b) Cola
       c) Lista
   2.- No lineales
       a) Árboles
       b) Grafos