Pilas y Colas en C++
-
Upload
marilin-mendoza-dominguez -
Category
Documents
-
view
18 -
download
0
description
Transcript of Pilas y Colas en C++
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 1/25
Estructuras de Datos(Programación 2) Pilas y Colas
Pilas y Colas
Fundamentos
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 2/25
Estructuras de Datos(Programación 2) Pilas y Colas
Pilas y Colas
• ¿Qué son?• Pilas
– Proiedades• Estados• !cciones
– Funcionamiento – Conclusiones
• Colas – Proiedades
• Estados• !cciones
– Funcionamiento – Conclusiones
• "#s$ueda de elementos• %n&ersión de elementos• Conclusiones 'inales
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 3/25
Estructuras de Datos(Programación 2) Pilas y Colas
¿Qué son?
• e trata de D!s (ios de Datos !*stractos)+'orman arte de nuestro arsenal de ,erramientas
de rogramación-• En am*os casos. el comortamiento $ue tienen y
su de'inición concetual est/n 0ntimamenteligados- i *ien am*as D!s ermiten guardarin'ormación de acuerdo al orden $ue ésta llega.
la 'orma en la cual esta in'ormación se e1trae endistinto orden en una D! con resecto a la otra-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 4/25
Estructuras de Datos(Programación 2) Pilas y Colas
¿Qué son?
• on muy e'icientes en cuanto a los tiemos deresuesta en la inserción y e1tracción de
elementos. y m/s all/ de la cantidad deelementos $ue contengan. ues siemre sa*endónde insertar y $ué e1traer-
• ientras se reseten sus caracter0sticas y'uncionalidades. ueden ser imlementadas de
distintas maneras. sin a'ectar su uso (cam*iar deuna imlementación a otra de*er0a sertransparente)-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 5/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Pilas
• Con resecto a la maniulación de sus
elementos resonde a la denominación 3%F45
LastIn
First
Out
• Esto imlica $ue el #ltimo elemento en entrarser/ el rimero en salir-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 6/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
¿Por qué?
• Concetualmente. las ilas 'ueron ensadas ara
cumlir con esta regla- Como estructura (D!). osee
un #nico unto de acceso a datos- !l tener un #nico unto de acceso. tanto ara insertar
como ara e1traer un elemento. siemre
accederemos al #ltimo elemento insertado (el #nico
visible). si es $ue la estructura no est/ &ac0a-
Entrada Salida
Tope
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 7/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Ejemplos de Pilas
• En la &ida real utili6amos ilas m/s
'recuentemente de lo $ue creemos- 7ay ilas de
li*ros o re&istas. de CDs. de latos+ los tu*os deelotitas de tenis son un *uen e8emlo (el tu*o es
la ila y las elotitas los elementos9 ¿Qué otras
ilas se les ocurren?
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 8/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Ejemplos de Pilas
• En in'orm/tica las ilas se usan muc,0simo-
Qui6/ la m/s 'amosa de todas sea la conocida
como pila de llamadas o call stack - :racias a lae1istencia de esta ila los rogramas ueden
guardar los untos de retorno al llamar a
su*rutinas- am*ién. en &arios lengua8es. se
usan ilas ara guardar los datos $ue asamoscomo ar/metros- Esto se ,ace en 'orma
autom/tica y transarente ara nosotros. y ayuda
a usar la memoria disoni*le con e'iciencia-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 9/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Propiedades de una Pila
• Estados
– ;ac0a – 3lena
• !cciones
– Crear<%niciali6ar – Destruir<;aciar
– !gregar (Elemento)
– E1traer (Elemento) – ;er (Elemento) oe
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 10/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Estados de una Pila
!m*os estados son *ooleanos (&alen
&erdadero o 'also)• Pila &ac0a
– e da siemre $ue la estructura no
contiene elementos-• Pila llena
– e da cuando no ,ay m/s lugar ara
almacenar elementos-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 11/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Aiones so!re una Pila
• !gregar elemento – Podemos agregar elementos. apilarlos.
siemre $ue la ila no esté llena- e conocetam*ién como Push o. en nuestro idioma.
Apilar -
• E1traer elemento
– Podemos e1traer el #ltimo elemento insertado.desapilarlo. siemre y cuando la ila no esté&ac0a- e conoce tam*ién como Pop o. ennuestro idioma. Desapilar -
• ;er oe – in $uitarlo. odemos &er el elemento $ue
est/ en la parte superior de la ila-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 12/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
(,acer clic= ara continuar con la animación)
oe
(la ila &ista desde arri*a)
Funionamiento de una Pila
C
"
! !#n no se ,aailado ning#n
elemento-
!
!l ailar el
elemento !la ila de8a
de estar
&ac0a-
En toe.
entonces.
se &e !-
"
!l ailar el
elemento ".
éste $ueda
>so*re elelemento
anterior-
!l ailar C. éste
taa a "-
C !l desailar
C. el toe de
la ila
>desciende-
3a ila est/
vacía-
En toe.a,ora.
&emos a ".
y ! $ueda
inaccesi*le-
En toe
a,ora
encontramos
a C- anto "
como !
$uedan
inaccesi*les-
;ol&emos a
encontrar a
" en oe-
Podemos seguir as0 ,asta $ue
la ila $uede comletamente
&ac0a. o ,asta o*tener elelemento $ue deseamos-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 13/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Pilas" Conlusiones
• @na ila es un T#A dedicado al almacenamiento ymaniulación de elementos. sin $ue imorte (a ni&elconcetual) el tio de dato $ue sean-
• Como D!. su 'uncionalidad es siemre la misma.indeendientemente de la imlementación $ue se ,ayautili6ado-
• Esta 'uncionalidad cumle con la regla LIFO (el orden desalida de los elementos es in&erso al de entrada) y es
8ustamente lo $ue determina a una ila. ues 'ue ensadacomo una estructura ara ailar y desailar elementos-
• Por esto. las ilas oseen un #nico unto lógico de accesoy salida ara sus elementos. y sólo &emos el #ltimoinsertado-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 14/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Colas
• Con resecto a la maniulación de sus
elementos resonde a la denominación F%F45
FirstIn
First
Out
• Esto imlica $ue el rimer elemento en entrarser/ el rimero en salir-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 15/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
¿Por qué?
• Por$ue 'ueron ensadas
ara mantener y mane8ar elementos resetando
siemre y directamente su orden de llegada- 3ascolas tienen un unto de inserción de elementos
y otro ara la e1tracción de los mismos.
y est/n en e1tremos ouestos (ca*ecera–'inal.
'rente–'ondo. o rimero–#ltimo)-
Por a$u0 entran
los elementos
Por a$u0
salen
Fondo Frente
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 16/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Ejemplos de Colas
• oda a$uella organi6ación donde el rimero $ue
llegue sea el rimero en irse es una cola-
@samos colas diariamente- En el *anco. en elcine. eserando un colecti&o9 A! la colaB
¿Esta
cola es
del que
va a
Tierra?
Así
es.
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 17/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Ejemplos de Colas
• En in'orm/tica las colas tam*ién se usan con
*astante 'recuencia- @no de los e8emlos uede
ser la cola de mensa8es del sistema-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 18/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Propiedades de una Cola
• Estados
– ;ac0a – 3lena
• !cciones
– Crear<%niciali6ar – Destruir<;aciar
– !gregar (Elemento)
– E1traer (Elemento) – ;er (Elemento) Ca*ecera
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 19/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Estados de una Cola
!m*os estados son *ooleanos (&alen
&erdadero o 'also)• Cola &ac0a
– e da siemre $ue la estructura no
contiene elementos-• Cola llena
– e da cuando no ,ay m/s lugar ara
almacenar elementos-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 20/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Aiones so!re una Cola
• !gregar elemento – Podemos agregar elementos siemre $ue la
cola no esté llena- iemre agregamos loselementos al 'inal-
• E1traer elemento – Podemos e1traer el elemento insertado m/s
antiguo. el cual se encuentra al 'rente. siemrey cuando la cola no esté &ac0a-
• ;er ca*ecera (tam*ién ;er Frente o ;errimero)
– in $uitarlo. odemos &er el elemento $ueest/ ró1imo a salir (en la cabecera o frente de la cola). $ue no es otro $ue el rimero-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 21/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
(,acer clic= ara continuar con la animación)
!C"
Ca*ecera
(la cola &ista desde adelante)
Funionamiento de una Cola
!
!
"C
!
!rrancamos con
la cola &ac0a.
sin elementos-
En la ca*ecera
no &emoselemento
alguno-
a tenemos un
rimer elemento
agregado a la
cola-
Podemos &er elelemento ! en
la ca*ecera (al
'rente)-
!l agregar ".
éste $ueda
detr/s de !-
!. el rimer elementoagregado. sigue al
'rente+ " $ueda
oculto e inaccesi*le-
3o mismo asa con C.
$ue $ueda encolado
detr/s de "-
C de*er/ eserar a $ue
se desencolen ! y "
ara llegar al 'rente-
!l e1traer el rimer
elemento
insertado. " asa
al 'rente-
". a,ora. $ueda en laca*ecera. mientras C
sigue oculto tras
éste. e inaccesi*le-
Podemos seguir as0 ,asta
&aciar la cola-
Pero. si &iniese nue&amente ! y lo agreg/semos a la cola.
¿en $ué osición $uedar0a?
!
Quedar0a al
'inal.
encolado
detr/s de C-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 22/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
Colas" Conlusiones
• @na cola es un D! dedicado al almacenamientoy maniulación de elementos-
• Como D!. su 'uncionalidad es siemre lamisma. indeendientemente de laimlementación $ue se ,aya utili6ado-
• u 'uncionalidad cumle con la regla F%F4 (elorden de salida de los elementos es el mismo$ue el de entrada)-
• Esto se de*e a $ue las colas est/n diseadasara de&ol&er los elementos ordenados tal comollegan- Para esto. las colas oseen un unto de
acceso y otro de salida $ue lógicamente est/nu*icados en e1tremos ouestos- iemre &emosel elemento $ue est/ rimero o al 'rente-
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 23/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
$%squeda de elementos
• inguna de estas dos D!s osee 'acilidades
$ue osi*iliten la *#s$ueda de elementos
contenidos en ellas. ues eso escaa a su'uncionalidad5 las ilas siempre de&uel&en el
#ltimo elemento. y las colas siempre el rimero-
• ¿Cómo se les ocurre $ue de*emos tra*a8ar ara
encontrar alg#n elemento contenido en estasestructuras. siemre resetando las reglas 3%F4
y F%F4. seg#n corresonda?
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 24/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
In&ersi'n de elementos
• Dado $ue ilas y colas mane8an sus elementos
en 'orma comletamente ouesta. al lle&ar los
elementos de una estructura a la otra ara luego&ol&erlos a &olcar en la estructura original. como
resultado nos $uedar/n todos los elementos en
osiciones in&ersas a las de origen-
¿Podemos comro*arlo?
C l i (i l
7/18/2019 Pilas y Colas en C++
http://slidepdf.com/reader/full/pilas-y-colas-en-c 25/25
Estructuras de Datos
(Programación 2)
Pilas y Colas
¿on estructuras realmente #tiles?
3os in&itamos a encontrar en la &ida
diaria otros e8emlos donde usemos
ilas y colas. distintos a los $ue
nom*ramos en este tra*a8o-
Conlusiones (inales