2. Estructura de datos
En programación, una estructura de datos es una forma de organizar un conjunto
de datos elementales con el objetivo de facilitar su manipulación. Un dato
elemental es la mínima información que se tiene en un sistema.
Una estructura de datos define la organización e interrelación de estos y un
conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones
básicas son:
Cada estructura ofrece ventajas y desventajas en
relación a la simplicidad y eficiencia para la realización
de cada operación. De esta forma, la elección de la
estructura de datos apropiada para cada problema
depende de factores como la frecuencia y el orden en
que se realiza cada operación sobre los datos.
Alta, adicionar un nuevo valor a la estructura.
Baja, borrar un valor de la estructura.
3. Tipos de estructuras de datos
Una estructura de Datos es una colección de datos que
pueden ser caracterizados por su organización y las
operaciones que se definen en ella.
Los tipos de datos más frecuentes utilizados en los diferentes
lenguajes de programación son:
Los tipos de datos simples pueden ser organizados en
diferentes estructuras de datos: estáticas y dinámicas.
4. Estructuras de Datos Dinámicas:
Son aquellas en las que el espacio ocupado en memoria puede ser modificado en
tiempo de ejecución. Corresponden a este tipo las listas, árboles y grafos. Estas
estructuras no son soportadas en todos los lenguajes. La elección de la estructura
de datos idónea dependerá de la naturaleza del problema a resolver y, en menor
medida, del lenguaje. Las estructuras de datos tienen en común que un
identificador, nombre, puede representar a múltiples datos individuales.
Estructuras de Datos estáticas:
Son aquellas en las que el espacio ocupado en memoria se
define en tiempo de compilación y no puede ser modificado
durante la ejecución del programa. Corresponden a este tipo los
arrays y registros
5. Pila o Stack:
Una pila (stack en inglés) es una lista ordinal o estructura de datos en la
que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In
First Out, último en entrar, primero en salir) que permite almacenar y
recuperar datos. Esta estructura se aplica en multitud de ocasiones en el
área de informática debido a su simplicidad y ordenación implícita de la
propia estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar
(push), que coloca un objeto en la pila, y su operación inversa, retirar (o
desapilar, pop), que retira el último elemento apilado.
En cada momento sólo se tiene acceso a la parte superior de la pila, es
decir, al último objeto apilado (denominado TOS, Top of Stack en inglés).
La operación retirar permite la obtención de este elemento, que es retirado
de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que
pasa a ser el nuevo TOS.
6. Listas enlazadas:
Una lista enlazada es una de las estructuras de datos
fundamentales, y puede ser usada para implementar otras
estructuras de datos. Consiste en una secuencia de nodos, en los
que se guardan campos de datos arbitrarios y una o dos
referencias, enlaces o punteros al nodo anterior o posterior. El
principal beneficio de las listas enlazadas respecto a los vectores
convencionales es que el orden de los elementos enlazados puede
ser diferente al orden de almacenamiento en la memoria o el disco,
permitiendo que el orden de recorrido de la lista sea diferente al de
almacenamiento
7. Listas simples enlazadas:
La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por
nodo. Este enlace apunta al siguiente nodo (o indica que tiene la dirección en
memoria del siguiente nodo) en la lista, o al valor NULL o a la lista vacía, si es
el último nodo.
Listas enlazadas circulares:
En una lista enlazada circular, el primer y el último nodo están unidos juntos.
Esto se puede hacer tanto para listas enlazadas simples como para las
doblemente enlazadas. Para recorrer una lista enlazada circular podemos
empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que
se regrese hasta el nodo original. Desde otro punto de vista, las listas
enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este
tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para
visitar todos los nodos de una lista a partir de uno dado.
8. Colas:
Una cola (también llamada fila) es una estructura de datos, caracterizada
por ser una secuencia de elementos en la que la operación de inserción
push se realiza por un extremo y la operación de extracción pop por el otro.
También se le llama estructura FIFO (del inglés First In First Out), debido a
que el primer elemento en entrar será también el primero en salir.
9. Arrays:
Un arreglo (array) es una colección de datos del mismo tipo, que se
almacenan en posiciones consecutivas de memoria y reciben un
nombre común. Para referirse a un determinado elemento de un array
se deberá utilizar un índice, que especifique su posición relativa en el
array. Un arreglo es una colección finita, homogénea y ordenada de
elementos. Finita: Todo arreglo tiene un límite; es decir, debe
determinarse cuál será el número máximo de elementos que podrán
formar parte del arreglo. Homogénea: Todos los elementos del arreglo
deben ser del mismo tipo. Ordenada: Se puede determinar cuál es el
primer elemento, el segundo, el tercero,.... y el n-ésimo elemento
10. Relación de la estructura de datos con los sistemas
operativos:
La relación con los sistemas operativos tiene que ver desde el la
creación del mismo, ya que para crear el sistema necesitaríamos
estructuras de datos para poder organizar el sistema como tal
todo sistema operativo debe poseer una estructura de datos,
claro está que algunos de forma más compleja y completa que
otros.