Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundamentos
Pilas y Colas
Pilas y Colas
Qu son? Pilas
Propiedades
Estados Acciones
Funcionamiento Conclusiones
Colas
Propiedades
Estados Acciones
Funcionamiento Conclusiones
Qu son?
Se trata de TDAs (Tipos de Datos Abstractos); forman parte de nuestro arsenal de herramientas de programacin. En ambos casos, el comportamiento que tienen y su definicin conceptual estn ntimamente ligados. Si bien ambas TDAs permiten guardar informacin de acuerdo al orden que sta llega, la forma en la cual esta informacin se extrae en distinto orden en una TDA con respecto a la otra.
Pilas y Colas
Qu son?
Son muy eficientes en cuanto a los tiempos de respuesta en la insercin y extraccin de elementos, y ms all de la cantidad de elementos que contengan, pues siempre saben dnde insertar y qu extraer. Mientras se respeten sus caractersticas y funcionalidades, pueden ser implementadas de distintas maneras, sin afectar su uso (cambiar de una implementacin a otra debera ser transparente).
Pilas y Colas
Pilas
Con respecto a la manipulacin de sus elementos responde a la denominacin LIFO: Last In First Out Esto implica que el ltimo elemento en entrar ser el primero en salir.
Pilas y Colas
Por qu?
Conceptualmente, las pilas fueron pensadas para cumplir con esta regla. Como estructura (TDA), posee un nico punto de acceso a datos. Al tener un nico punto de acceso, tanto para insertar como para extraer un elemento, siempre accederemos al ltimo elemento insertado (el nico visible), si es que la estructura no est vaca.
Entrada
Salida
Tope
Pilas y Colas
Ejemplos de Pilas
En la vida real utilizamos pilas ms frecuentemente de lo que creemos. Hay pilas de libros o revistas, de CDs, de platos; los tubos de pelotitas de tenis son un buen ejemplo (el tubo es la pila y las pelotitas los elementos Qu otras pilas se les ocurren?
Pilas y Colas
Ejemplos de Pilas
En informtica las pilas se usan muchsimo. Quiz la ms famosa de todas sea la conocida como pila de llamadas o call stack. Gracias a la existencia de esta pila los programas pueden guardar los puntos de retorno al llamar a subrutinas. Tambin, en varios lenguajes, se usan pilas para guardar los datos que pasamos como parmetros. Esto se hace en forma automtica y transparente para nosotros, y ayuda a usar la memoria disponible con eficiencia.
Pilas y Colas
Estados
Vaca Llena
Acciones
Crear/Inicializar Destruir/Vaciar Agregar (Elemento) Extraer (Elemento) Ver (Elemento) Tope
Estructuras de Datos (Programacin 2) Pilas y Colas
Pila llena
Se da cuando no hay ms lugar para almacenar elementos.
Pilas y Colas
Agregar elemento
Podemos agregar elementos, apilarlos, siempre que la pila no est llena. Se conoce tambin como Push o, en nuestro idioma, Apilar.
Extraer elemento
Podemos extraer el ltimo elemento insertado, desapilarlo, siempre y cuando la pila no est vaca. Se conoce tambin como Pop o, en nuestro idioma, Desapilar.
Ver Tope
Sin quitarlo, podemos ver el elemento que est en la parte superior de la pila.
Estructuras de Datos (Programacin 2) Pilas y Colas
B La pila est Al apilar el vaca. elemento B,as hasta que Podemos seguir ste laapilar pila quede completamente Al elqueda sobre vaca, o el An no el se obtener ha elemento A hasta elemento elemento que deseamos. apilado ningn la pila deja anterior. elemento. de estar vaca.
(hacer click para continuar con la animacin)
Pilas y Colas
Pilas: Conclusiones
Una pila es un TDA dedicado al almacenamiento y manipulacin de elementos, sin que importe (a nivel conceptual) el tipo de dato que sean. Como TDA, su funcionalidad es siempre la misma, independientemente de la implementacin que se haya utilizado. Esta funcionalidad cumple con la regla LIFO (el orden de salida de los elementos es inverso al de entrada) y es justamente lo que determina a una pila, pues fue pensada como una estructura para apilar y desapilar elementos. Por esto, las pilas poseen un nico punto lgico de acceso y salida para sus elementos, y slo vemos el ltimo insertado.
Pilas y Colas
Colas
Con respecto a la manipulacin de sus elementos responde a la denominacin FIFO: First In First Out Esto implica que el primer elemento en entrar ser el primero en salir.
Pilas y Colas
Por qu?
Porque fueron pensadas para mantener y manejar elementos respetando siempre y directamente su orden de llegada. Las colas tienen un punto de insercin de elementos y otro para la extraccin de los mismos, y estn en extremos opuestos (cabecerafinal, frentefondo, o primeroltimo).
Fondo
Frente
Pilas y Colas
Ejemplos de Colas
Toda aquella organizacin donde el primero que llegue sea el primero en irse es una cola. Usamos colas diariamente. En el banco, en el cine, esperando un colectivo A la cola!
As es.
Pilas y Colas
Ejemplos de Colas
En informtica las colas tambin se usan con bastante frecuencia. Uno de los ejemplos puede ser la cola de mensajes del sistema.
Pilas y Colas
Estados
Vaca Llena
Acciones
Crear/Inicializar Destruir/Vaciar Agregar (Elemento) Extraer (Elemento) Ver (Elemento) Cabecera
Estructuras de Datos (Programacin 2) Pilas y Colas
Cola llena
Se da cuando no hay ms lugar para almacenar elementos.
Pilas y Colas
Agregar elemento
Podemos agregar elementos siempre que la cola no est llena. Siempre agregamos los elementos al final.
Extraer elemento
Podemos extraer el elemento insertado ms antiguo, el cual se encuentra al frente, siempre y cuando la cola no est vaca.
A C B
Lo mismo Arrancamos pasa con C, con Ya tenemos un que queda Alel agregar B, vaca, sin Al extraer primer la encolado cola Quedara al primer elemento detrs de B. ste queda elemento insertado, elementos. final, agregado afrente. la esperar C deber que detrs de A. a B pasa al encolado Podemos cola. se desencolen A y B seguir as hasta detrs de C. la cola. En la vaciar cabecera para llegar al frente. Pero, si viniese Podemos vernuevamente el no vemos C A B B, A, ahora, el primer queda elemento en la A yelemento lo agregsemos en la a la cola, elemento cabecera, agregado, mientras sigueA C al en qu posicin cabecera (al quedara? alguno. sigue frente; oculto B queda tras ste, oculto frente). e inaccesible. e inaccesible. Cabecera (hacer click para continuar con la animacin) (la cola vista desde adelante)
Estructuras de Datos (Programacin 2) Pilas y Colas
Colas: Conclusiones
Una cola es un TDA dedicado al almacenamiento y manipulacin de elementos. Como TDA, su funcionalidad es siempre la misma, independientemente de la implementacin que se haya utilizado. Su funcionalidad cumple con la regla FIFO (el orden de salida de los elementos es el mismo que el de entrada). Esto se debe a que las colas estn diseadas para devolver los elementos ordenados tal como llegan. Para esto, las colas poseen un punto de acceso y otro de salida que lgicamente estn ubicados en extremos opuestos. Siempre vemos el elemento que est primero o al frente.
Estructuras de Datos (Programacin 2) Pilas y Colas
Bsqueda de elementos
Ninguna de estas dos TDAs posee facilidades que posibiliten la bsqueda de elementos contenidos en ellas, pues eso escapa a su funcionalidad: las pilas siempre devuelven el ltimo elemento, y las colas siempre el primero. Cmo se les ocurre que debemos trabajar para encontrar algn elemento contenido en estas estructuras, siempre respetando las reglas LIFO y FIFO, segn corresponda?
Pilas y Colas
Inversin de elementos
Dado que pilas y colas manejan sus elementos en forma completamente opuesta, al llevar los elementos de una estructura a la otra para luego volverlos a volcar en la estructura original, como resultado nos quedarn todos los elementos en posiciones inversas a las de origen.
Podemos comprobarlo?
Pilas y Colas
Conclusiones finales
Son estructuras realmente tiles? Los invitamos a encontrar en la vida diaria otros ejemplos donde usemos pilas y colas, distintos a los que nombramos en este trabajo.
Pilas y Colas
Aclaracin
Si bien mostramos que los elementos se mueven hacia el frente de la cola, en la implementacin no son los elementos los que se mueven, sino las marcas de frente y fondo, tal como se puede ver aqu.
Frente
Estructuras de Datos (Programacin 2)
Fondo
Pilas y Colas