Pilas y Colas en C++

25
 Estructuras de Datos (Programación 2) Pilas y Colas Pilas y Colas Fundamentos

description

Pilas y Colas en C++ Lenguaje De Programacion

Transcript of Pilas y Colas en C++

Page 1: 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

Page 2: Pilas y Colas en C++

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

Page 3: Pilas y Colas en C++

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-

Page 4: Pilas y Colas en C++

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)-

Page 5: Pilas y Colas en C++

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-

Page 6: Pilas y Colas en C++

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

Page 7: Pilas y Colas en C++

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?

Page 8: Pilas y Colas en C++

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-

Page 9: Pilas y Colas en C++

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

Page 10: Pilas y Colas en C++

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-

Page 11: Pilas y Colas en C++

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-

Page 12: Pilas y Colas en C++

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-

Page 13: Pilas y Colas en C++

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-

Page 14: Pilas y Colas en C++

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-

Page 15: Pilas y Colas en C++

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

Page 16: Pilas y Colas en C++

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.

Page 17: Pilas y Colas en C++

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-

Page 18: Pilas y Colas en C++

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

Page 19: Pilas y Colas en C++

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-

Page 20: Pilas y Colas en C++

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-

Page 21: Pilas y Colas en C++

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-

Page 22: Pilas y Colas en 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-

Page 23: Pilas y Colas en C++

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?

Page 24: Pilas y Colas en C++

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

Page 25: Pilas y Colas en C++

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