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. 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. DEFINICIÓN, IMPORTANCIA Y UTILIDAD DE LAS ESTRUCTURAS DE DATOS CONCEPTO: Es una colección de datos organizada de un modo particular. Las estructuras de datos pueden ser de dos tipos: ESTRUCTURAS DE DATOS ESTÁTICAS Y ESTRUCTURAS DE DATOS DINÁMICAS. ESTRUCTURAS DE DATOS ESTÁTICAS: Son aquellas en las que se asigna una cantidad fija de memoria cuando se declara la variable. En grandes ocasiones se necesitan colecciones de datos que crezcan y reduzcan su tamaño en memoria a medida que el programa progrese. Esto se logra implementando las estructuras dinámicas. ESTRUCTURA DE DATOS DINÁMICAS: Son aquellas cuya ocupación en memoria puede aumentar o disminuir en tiempo de ejecución IMPORTANCIA Y UTILIDAD DE LAS ESTRUCTURAS DE DATOS La programación estructurada significa escribir un programa de acuerdo a las siguientes reglas. 1.-El programa tiene un diseño modular 2.-Los módulos son diseñados de un modo descendente 3.-Cada módulo se codifica utilizando las tres estructuras de control básicas: a)Secuencia b)Selección c)Repetición La programacióne estructurada se refiere a un conjunto de técnicas que aumentan considerablemente la productividad del programa reduciendo en elevado grado el tiempo requerido para escribir, verificar,depurar y mantener los programas. Utiliza un número limitado de estrcuturas de control que minimizan la complejidad de los programas y por consiguiente reducen los errores y hacen los programas en general más eficientes. 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 OPERACIONES MÁS COMUNES DE LAS ESTRUCTURAS DE DATOS DEFINICIONES BÁSICAS NODO: Está formado por dos campos. Un campo de información que contiene el valor del elemento (info) y el campo NEXT que es el que apunta a la dirección del elemento siguiente. CAMPO DE INFORMACIÓN (INFO): Contiene el elemento actual o valor del nodo en la lista. CAMPO DE DIRECCIÓN (NEXT): Contiene la dirección del nodo siguiente de la lista. LISTA LINEAL ENCADENADA:Es cuando los elementos fueron ordenados explícitamente en nodos, es decir, cada elemento contiene dentro de sí mismo la dirección del elemento siguiente. list --> [info|next]--> [info|next]--> [info|next]---// (nil) LIST:Es un puntero externo que apunta hacia el primer nodo de la lista NULO:Es el campo de dirección siguiente al último nodo en la lista, el cual es una dirección no válida. Este puntero nulo es utilizado para señalar el final de la lista. LISTA VACIA:Es una lista sin nodos, es decir, el valor del puntero externo de la lista es el puntero nulo. Se puede especificar así: List=nil P Q List-->[ x | ] --> [ y | ]--// (nil) INFO(nodo (p))=x NEXT(nodo (p))=q INFO(next (p))=y NEXT(nodo (q))=nil LISTA LINEAL ENCADENADA: Es una estructura dinámica, donde el número de nodos en una lista puede variar a medida que los elementos son insertados y removidos, por lo tanto la naturaleza dinámica de una lista contrasta con la naturaleza estática de un arreglo que permanece en forma constante. OPERACIONES MÁS COMUNES EN UNA LISTA LINEAL ENCADENADA ALGORITMO PARA INSERCIÓN DE NODOS EN UNA LISTA LINEAL ENCADENADA P=GETNODE INFO(P)=X NEXT(P)=LIST LIST=P En donde: GETNODE es un mecanísmo para traer nodos vacíos. ALGORITMO PARA REMOVER DE NODOS EN UNA LISTA LINEAL ENCADENADA P=LIST LIST=NEXT(P) X=INFO(P) FREENODE(P) En donde: FREENODE es un mecanísmo para eliminar nodos.