You are on page 1of 25

Pilas y Colas

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

Propiedades de una Pila

Estados
Vaca
Llena

Acciones
Crear/Inicializar
Destruir/Vaciar
Agregar (Elemento)
Extraer (Elemento)
Ver (Elemento) Tope
Estructuras de Datos
(Programacin 2)

Pilas y Colas

Estados de una Pila

Ambos estados son booleanos (valen


verdadero o falso)
Pila vaca
Se da siempre que la estructura no
contiene elementos.

Pila llena
Se da cuando no hay ms lugar para
almacenar elementos.

Estructuras de Datos
(Programacin 2)

Pilas y Colas

Acciones sobre una Pila


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

Funcionamiento de una Pila


Al apilar C, ste
tapa a B.

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

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.

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 entran


los elementos

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

Propiedades de una Cola

Estados
Vaca
Llena

Acciones
Crear/Inicializar
Destruir/Vaciar
Agregar (Elemento)
Extraer (Elemento)
Ver (Elemento) Cabecera
Estructuras de Datos
(Programacin 2)

Pilas y Colas

Estados de una Cola

Ambos estados son booleanos (valen


verdadero o falso)
Cola vaca
Se da siempre que la estructura no
contiene elementos.

Cola llena
Se da cuando no hay ms lugar para
almacenar elementos.

Estructuras de Datos
(Programacin 2)

Pilas y Colas

Acciones sobre una Cola


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.

Ver cabecera (tambin Ver Frente o Ver


primero)
Sin quitarlo, podemos ver el elemento que
est prximo a salir (en la cabecera o frente
de la cola), que no es otro que el primero.
Estructuras de Datos
(Programacin 2)

Pilas y Colas

Funcionamiento de una Cola

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

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.

Estructuras de Datos
(Programacin 2)

Pilas y Colas

You might also like