viernes, 21 de septiembre de 2012

Estructura de datos


ESTRUCTURA DE DATOS
 DEFINICIÓN
En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental es la mínima información que se tiene en el sistema) con el objetivo de facilitar la manipulación de estos datos como un todo o individualmente.
Una estructura de datos define la organización e interrelacionamiento de estos, y un conjunto de operaciones que se pueden realizar sobre él. Las operaciones básicas son:
Alta, adicionar un nuevo valor a la estructura.
Baja, borrar un valor de la estructura.
Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estén ordenados)…
Otras operaciones que se pueden realizar son:
Ordenamiento, de los elementos pertenecientes a la estructura.
Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.
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.
Un registro, en programación, es un tipo de dato estructurado formado por la unión de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carácter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le llama campo.
Un registro se diferencia de un vector en que éste es una colección de datos iguales, es decir, todos del mismo tipo, mientras que en una estructura los elementos que la componen, aunque podrían serlo, no tiene porque ser del mismo tipo.

Campo
En informática, un campo es un espacio de almacenamiento para un dato en particular. En las bases de datos, un campo es la mínima unidad de información a la que se puede acceder; un campo o un conjunto de ellos forman un registro, donde pueden existir campos en blanco, siendo éste un error del sistema. En las hojas de cálculo los campos son llamados celdas. La mayoría de los campos tienen atributos asociados a ellos. Por ejemplo, algunos campos son numéricos mientras otros almacenan texto, también varía el tamaño de estos. Adicionalmente, cada campo tiene un nombre.

Tipos de Campo

Un campo puede ser:

Campo genérico

Aquel campo que posee un dato único para una repetición de entidad. Puede servir para la búsqueda de una entidad en específico.
Alfanuméricos: Contiene cifras y letras. Presentan una longitud limitada (225 caracteres).
Numéricos: Existen de varios tipos principalmente como enteros y reales.
Booleanos: Admite dos valores, "Verdadero" y "Falso" (True-False).
Modelamiento Entidad-Relación
Es una técnica para desarrollar modelos de datos de alta calidad, por medio de la cual se identifican los objetos de importancia en una organización (entidades), las propiedades de estos objetos (atributos) y cómo están relacionados unos con otros (relaciones).
Entidad
n  Es una cosa u objeto de importancia, real o imaginaria, de la cual se necesita conocer o mantener información


n  Atributo: es cualquier detalle que sirva para calificar, identificar, clasificar, cuantificar o expresar el estado de una entidad (característica de una entidad)

Concepto de Arreglos:
Es un conjunto de datos o una estructura de datos homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal).
Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos.
 Los arreglos pueden ser de los siguientes tipos:
De una dimensión.
De dos dimensiones.
De tres o más dimensiones.
Características:
1- Los Arreglos o Array tienen tres formas de indexación las cuales son: Indexación base-cero (0), Indexación base-uno (1), Indexación base-n (n).
2- Son usados en programas como: Java, Léxico, Visual Basic, C, C++, y Pearl:
Ejemplos:

Concepto de Pilas:
Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, lo que también se denominan estructuras LIFO (Last In, First Out).
Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en 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.
Características:
1- Evaluación de expresiones en notación postfija (notación polaca inversa).
2- Reconocedores sintácticos de lenguajes independientes del contexto.
3- Implementación de recursividad.
Ejemplos:

Concepto de Colas:
Una cola 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.
Características:
1- Las colas se caracterizan por ser circulares, de prioridad, bicolas, bicolas de entrada restringida y de salida restringida.
2- Permiten añadir un elemento, eliminar un elemento y devolver un elemento primario de entrada.
Ejemplos:

Concepto de Listas:
En Ciencias de la Computación, 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 (punteros) al nodo anterior y/o posterior. El principal beneficio de las listas enlazadas respecto a los Array 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. Una lista enlazada es un tipo de dato auto referenciado porque contienen un puntero o link a otro dato del mismo tipo.
Características:
1- Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante, pero no permiten un acceso aleatorio.
2- Existen diferentes tipos de listas enlazadas: Listas enlazadas simples, listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente circulares.
3- Pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas.
Ejemplos:
Lista Enlazada Simple:
Lista Doblemente Enlazada:
Lista Enlazada Circular:

Lista Doblemente Enlazada Circular: