Professional Documents
Culture Documents
Fundamentos
Estructuras de Datos
(Programacin 2)
Pilas y Colas
Pilas y Colas
Qu son?
Pilas
Propiedades
Estados
Acciones
Funcionamiento
Conclusiones
Colas
Propiedades
Estados
Acciones
Funcionamiento
Conclusiones
Bsqueda de elementos
Inversin de elementos
Conclusiones finales
Estructuras de Datos
(Programacin 2)
Pilas y Colas
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.
Estructuras de Datos
(Programacin 2)
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).
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
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
Estructuras de Datos
(Programacin 2)
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?
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
Pilas y Colas
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
Al desapilar
C, el tope de
la pila
desciende.
C
A
B
En tope
ahora a
Volvemos
En
tope, a
encontramos
encontrar
ahora,
tope,
a C.
Tanto
B
BEn
en
Tope.
vemos
a
entonces,
como A B,
yse
A queda
ve A.
quedan
inaccesible.
inaccesibles.
Tope
(la pila vista desde arriba)
La pila est
Al apilar el
vaca.
elemento
B,as hasta que
Podemos
seguir
la apilar
pilaste
quede
completamente
Al
elqueda
sobre
An
no el
se obtener
ha
vaca,
oAhasta
el
elemento
elemento
apilado
ningn
elemento
que
deseamos.
la pila
deja
anterior.
elemento.
de estar
vaca.
(hacer click para continuar con la animacin)
Estructuras de Datos
(Programacin 2)
Pilas y Colas
Pilas: Conclusiones
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
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).
Por aqu
salen
Fondo
Estructuras de Datos
(Programacin 2)
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!
Esta
cola es
del que
va a
Tierra?
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
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.
Estructuras de Datos
(Programacin 2)
Pilas y Colas
Extraer elemento
Podemos extraer el elemento insertado ms
antiguo, el cual se encuentra al frente, siempre
y cuando la cola no est vaca.
Pilas y Colas
A
C
B
A
Lo mismo Arrancamos
pasa con C, con
Ya
tenemos
un
que
encolado
Alelqueda
agregar
B,
Al extraer
primer
la
cola vaca,
al
primerelemento
elemento
detrs
deQuedara
B.
ste
queda
sin
elementos.
agregado
aBlapasa
C deber
esperar
que
detrs
de A. afinal,
insertado,
encolado
cola.
Podemos
desencolen
A y B seguir as hasta
alse
frente.
detrs
de C.la cola.
la vaciar
cabecera
para llegar alEn
frente.
Podemos
el
Pero,
viniese
nosielemento
vemos
C
A
B, A,
ahora,
el primer
queda
en lavernuevamente
B
elemento
A en a la cola,
A y mientras
lo
agregsemos
elemento
cabecera,
agregado,
sigueCal
laqu
cabecera
(alquedara?
en
posicin
sigue
frente;
oculto
Balguno.
queda
tras
frente).
ste,
oculto
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?
Estructuras de Datos
(Programacin 2)
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?
Estructuras de Datos
(Programacin 2)
Pilas y Colas
Conclusiones finales
Estructuras de Datos
(Programacin 2)
Pilas y Colas