Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Los datos fsicos se encuentran asociados a un mecanismo de datos, que controla la forma en la que la informacin puede ser accedida por los programas, existen principalmente cuatro tipos de estos mecanismos. Que son : Las colas Las pilas Las listas Los rboles
Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008
Cada uno de los mtodos mencionados con anterioridad proporciona una solucin a cada tipo de problema. Cada uno un dispositivo que realiza una operacin de almacenamiento y de recuperacin de los datos dados. Todos ellos tienen dos elementos en comn, como es : El almacenamiento de datos La recuperacin de datos Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 CONCEPTO DE LISTA Es un conjunto de nodos cuyas propiedades estructurales incluyen solo las posiciones lineales (unidimensionales) para ella se definen operaciones como las siguientes: .- Tener acceso a un nodo .- Insertar y eliminar un nodo en la lista .- combinar dos o mas listas en una .- Dividir una lista en dos o mas listas .- Determinar la cantidad de nodos en la lista .- Ordenar la lista de acuerdo a un criterio .- buscar un elemento bajo una condicin. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 PILAS Es un conjunto dinmico que obedece el orden lifo Las pilas es en las que todas las inserciones y extracciones de elementos se realizan por un solo extremo, llamado el tope de la pila. primero ultimo Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 LAS SIMPLEMENTE ENLAZADAS Contienen un enlace al elemento siguiente, las doblemente enlazadas tanto al siguiente elemento como al elemento anterior del la lista. Una lista simplemente enlazada necesita que cada elemento contenga un enlace con el siguiente elemento, cada elemento consiste en una estructura de campos de informacin a punteros de enlace. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 LISTAS DOBLEMENTE ENLAZADAS. Las listas doblemente enlazadas consisten en datos y enlaces tanto al elemento siguiente como al elemento anterior. Con lo que se consiguen dos grandes ventajas, primero la lista se puede leer en cualquier direccin, la segunda es que se pueden leer los enlaces hacia delante como hacia atrs, con lo que si un enlace resulta no valido se puede reconstruir utilizando el otro enlace. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 LISTAS CIRCULARES Las listas son estructuras muy ricas y variadas. Hemos visto las ms simples; las listas lineales. Veamos ahora otros tipos de listas, similares a las ya estudiadas; las listas circulares. Una lista lineal enlazada circularmente, o simplemente una lista circular, es una lista en la que el puntero siguiente al "ltimo" elemento apunta hacia el primer elemento o nodo. En estas listas no existen ni primero ni ltimos elementos, aunque se debe elegir obligatoriamente un puntero para referenciar la lista. Esta lista presenta la gran ventaja de que cada nodo en una lista circular es accesible evitando caer en un bucle infinito. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 EJEMPLO: Las listas circulares tienen la caracterstica de que el ultimo elemento de la misma apunta al primero. en la siguiente figura se mostrara un ejemplo de una lista circular: las operaciones en listas circulares son similares a las operaciones en listas lineales , por lo tanto no se volver a tratar cada una de ellas. En el caso de la operacin de recorrido de las listas circulares , es necesario que se debe aclarar que se debe considerar algn criterio para detectar cuando se han visitado todos los nodos para evitar caer en ciclos infinitos. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 PILAS Estructura de datos en la que los elementos se aaden y quitan solo por un extremo. Una pila es lo contrario de una cola, ya que su acceso es de tipo LIFO, el ltimo que entra es el primero que sale. Imaginar un montn de libros unos encima de otros y que para acceder al segundo por arriba primero es necesario coger el primero, su utilizacin principal es para el software de sistemas, compiladores, intrpretes. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 ESPECIFICACIN FORMAL DEL TAD-PILA Para definir el tipo de datos abstracto (TAD) pilas, no es suficiente la estructura lgica. Debemos definir el conjunto de operaciones que permita al usuario acceder y manipular los elementos almacenados en una pila. Como las pilas es una estructura dinmica, cambia conforme se aaden y quitan elementos en esta. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 IMPLEMENTACION DE PILAS CON ARREGLOS Una pilas es una coleccin ordenada de objetos. En C, arreglos permite almacenar colecciones ordenadas. Las desventajas de implementar una pila mediante un arreglo es que esta ltima es de tamao fijo, mientras que las pilas son de tamao dinmico. OPERACIONES DE UNA PILA Las operaciones bsicas de una pila son push (empuja, meter) y pop (sacar) _ Push: aade un nuevo elemento _ Pop: elimina un nuevo elemento Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Otra operaciones usualmente incluidas es el tipo de datos adstrato pila son: _ isEmpty (esta vaca): verifica si la pila es esta vaca _ IsFull (esta Llena): verifica si la pila esta llena Ejemplo 4 4 1 4 1 1 4 1 4 1 4 4 1 push(4) push(1) push(1) pop() push(4) pop() Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Pila_Vacia: Consultar si la pila est vaca Pila_Llena: Consultar si la pila est llena Consultar_Pila: Consultar el contenido de la cima de la pila sin sacar el elemento de la misma El carcter dinmico de la pila se debe a que el tamao de la pila es variable, independientemente de la implementacin. Crea una pila inicializndola como una pila vaca Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Push: inserta un elemento en el top de la pila Cada elemento al ser insertado ocupar siempre el top en la pila; 12 en la imagen anterior y 15 en esta imagen. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Los elementos han sido insetados en este orden: 12, 15, 99, 1, 5, 33, 421, 53, 27, 82, 641, 66, 31, 41, 51 dado que el ultimo elemento fue el 51 es el que ocupa el top en la pila Una caracterstica de las pilas es que son estructuras LIFO(last input , first output), es decir el ultimo en entrar sera el primero en salir Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 VARIABLES DINMICAS. Existen una gran variedad de aplicaciones en las que no es posible conocer a priori la dimensin de los datos que sern necesarios, por lo que en dichos casos es necesario utilizar tipos de datos DINMICOS. El inconveniente es que, muy posiblemente, se ocupar memoria que puede ser necesaria para otras variables. Las estructuras dinmicas se caracterizan porque la reserva de memoria se realiza durante la ejecucin del programa pudiendo reservar y liberar posiciones de memoria segn sea necesario durante la ejecucin del mismo . Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 DIRECCIONES DE MEMORIA: La memoria interna del ordenador se organiza mediante celdas numeradas o direccionadas consecutivamente. Cada dato almacenado ocupar una de estas celdas (conjunto de bytes adyacentes). El nmero de bytes que se requieren para almacenar un dato depende de su tipo, as como del procesador de la mquina. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 La declaracin de un determinado dato indica, entre otras cosas, que el compilador reservar automticamente memoria para almacenar dicho dato. El dato podr ser accedido si se conoce su localizacin o direccin de memoria, ( nota ). La direccin del dato se corresponde con la direccin de la casilla o celda de memoria que contiene dicho dato. La direccin de una celda de memoria es una identificacin predeterminada por el hardware del ordenador y no se puede modificar. Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008 Ejemplo: Sea la variable "a" que representa un dato de tipo entero. Tras la declaracin de dicha variable, int a, el compilador reservar el nmero de bytes necesarios a partir de una determinada direccin de la memoria: Direcciones Nombres de variable Contenido de variables #387 vacio #388 variable1 vacio #389 A vacio #390 variable3 vacio #391 vacio Prof. Ing. Zamantha Gonzlez Daz Mayo, 2008