Professional Documents
Culture Documents
ESTRUCTURAS DE DATOS
Uno de los conceptos mas tiles en computacin es la pila o stack Es un conjunto de elementos, en la que:
Los elementos se a aden ! se "emue#en po" un solo e$t"emo Este e$t"emo es llamado %tope& de la pila
Ejemplo:
Cuando un empleado se #a de #acaciones, le lle'a co""eo a su esc"ito"io ! las ca"tas se #an %apilando&( Al "e'"esa" de #acaciones, la ultima ca"'a en lle'a", se"a la p"ime"a que "e#isa"a Al te"mina" de "e#isa"la, la nue#a ca"ta del tope de la pila )a*"+ cam*iado La m+s "eciente de la pila, se"a la si'uiente en se" "e#isada
-.u/ datos se"ian impo"tantes conoce" so*"e la ,ila0 -1 que ope"aciones pod"2amos e3ectua" a la misma0
Usemos el ejemplo del co""eo: Al acumula"se, Cada ca"ta5elemento6, e"a %metida& a la pila: push(s,elemento) La ope"acin pus) aumenta un elemento a la pila, ! esta aumenta en su tama o
Tope o Cima
Esta a!ia"
Si
Al "e#isa" c4ca"ta, se la %saca*a& de la pila elemento = pop(s) La ope"acin pop "emue#e el elemento Tope de la pila ! lo "eto"na( La pila disminu!e su tama o
3
PILA: OPERACIONES
InicializarPila(Pila) E#e!to: re!i$e una pila % la ini!iali/a para su tra$a0o normal EliminarPila(Pila) E#e!to: re!i$e una pila % la li$era !ompletamente EstaVacia(Pila) retorna &' (oolean E#e!to: )e*uel*e true si esta *a!ia % #alse en !aso !ontrario Pop(Pila) retorna &' elemento E#e!to: -e!i$e la pila, remue*e el elemento tope % lo retorna E.!ep!ion: Si la pila esta *a!ia, pro,u!e error Push(pila, elemento) E#e!to: Toma la pila % aumenta su tama+o, ponien,o el elemento en la !ima ,e la pila TopePila(Pila) retorna &' elemento E#e!to: )e*uel*e el elemento !ima ,e la pila E.!ep!ion: Si la pila esta *a!ia pro,u!e error 4
En conclusin:
La pila es un conjunto de elementos De los cuales solo cono7co ! puedo #e" el TO,E ,uede contene" in3o"macin de cualquie" tipo, es deci", es 'en/"ico <pila> ::= <tope> + {<nodo>} <tope> ::= <enlace> <enlace> ::= (ReferenciaNodo | NULL) <nodo> ::= <contenido> + <enlace> <contenido> ::= <<dato>>{<<dato>>}
5
OTRAS OPERACIONES
Una #e7 #ac2a, no se pueden %saca"& mas elementos de la pila De*emos sa*e" si la pila Esta Vaca?: EstaVacia(s) De*e"2amos pode" %"e#isa"& el elemento tope de la pila: TopePila(s) Si la pila esta #ac2a, no de*e e$isti" un #alo" tope
SUBDESBORDAMIENTO de la pila
En la ,ila los elementos solo se pueden inse ta al !inal de la lista 1 solo se pueden e"o#e del $inal de la lista Est+tica o Din+mica :os si"#en pe"3ectamente pa"a la ,ila
!
IMPLEMENTACION ESTATICA
Tope ; 89:2ELE8&1
8 EL E2 :9 8
,us), llamando a ;nse"ta":odo<inal ,op, llamando a Saca":odo<inal Tope,ila, llamando a Consulta"Ultimo 9 es deci", cada ope"acin de la pila esconde dent"o
Las operaciones de la Lista Contigua
"
Y LAS OPERACIONES?
,ila=>acia
pu$li! $ool Esta a!ia()1
$,ila=C"ea"
pu$li! =Pila(int ma.) 1
Tope
pu$li! no,o Tope()1 I# tope ' &15 -eturn( m%2pila3tope4)5 else return(>@LL)5 7
,us)
,op
;nse"ta un elemento en la pila, cuando se puede( Este elemento es el nue#o tope El tope aumenta
%&
IMPLEMENTACION DINAMICA
Una pila, o una cola, las dos son Listas "ealmente
Listas en las cuales las ope"aciones en ;nse"ta" ! Remo#e" est+n
limitadas
%%
Stack
La li*"e"ia implementa un TDA pila que se *asa en
LSE(
t!pede3 List Stack? Stack @ stack:eA56? stack;sEmpt!5Stack @S6? stack,us)5Stack @S, :odeList @nue#o6? :odeList @stack,op5Stack @S6? :odeList @stack,eek5Stack @S6?
%2
EJERCICIO EN CLASE
Recupe"a" un conjunto de elementos en o den in#e so a como se int"oduje"on Lee" una secuencia de elementos ente"os Lue'o most"a"los en o"den in#e"so al in'"esado Si se in'"esa: B, C, D, E Se most"a"a: E, D, C, B
Un p"o'"ama de*e
Ejemplo:
%3
ANALISIS
Cada elemento in'"esado puede se" %metido& en la pila Ejemplo: Una #e7 llenada la pila, Solo )a! que %saca"&, elemento t"as elemento D C 3 1 D 8asta que la pila quede C #ac2a 3
1
%4
SOLUCION
(egin1 Pila S ; ne? Sta!E()5 Int ,ato5 ?hile(T-@E)1 ?rite(FIngrese elemento:G)5 rea,(,ato) i#(,ato ;; !entinela) $reaE5 S6Push(,ato)5 7 ?hile(HS6empt%(S))1 ?rite(S6Pop())5 7 7
%5
!) " ($-2%&))
Al 3inal de la e$p"esin
,o" ejemplo:
(9B()) B 3
En este punto ,e la e.presiIn, %a se sa$e Jue es in!orre!ta 9!um ( ; 1 9!um ) ; 2 >o se !umple la regla
%!
PRIMER ENFO UE
valida = true;
,odemos lle#a" un conteo de parntesis Este de*e"2a lle#a" totales de 6 ! de 5 Si en al'n momento, al "e#isa" la e$p"esin, la di3e"encia conteo de pa"/ntesis es ne'ati#o )a! un e""o"( Si al 3inal no coinciden los #alo"es tam*i/n e""o"(
while(no hayamos revisado toda la expresion) { if (elemento_actual == () Total_der++; else if(elemento_actual == )) Total_i !++; if(Total_der " Total_i !){ valida = false; #rea$; % % if (Total_der &= Total_i !) valida = false;
%"
Ot"a 3o"ma, es la %3o"ma natu"al& Cuando "e#isamos una e$p"esin de este tipo:
Re#isamos los pa"/ntesis de la de"ec)a, ! *uscamos si tienen %matc)& en la i7quie"da D & ((:L ((:BM)N(O&3)) B M) N (P&26C))
La Pila se utili/a 0ustamente para Fre!or,arG ,e la #orma a$a0o in,i!a,a
%#
Y A!ORA" EL AL#ORITMO
stac$ ' = stac$(ew(); )*'e declara una pila s+ para almacenar los ( *) while(no hayamos leido toda la cadena) { ))tomar el si,uiente sim#olo de la expresion if(sim#olo = () )*-lmacenarlo*) stac$.ush('+sim#olo); if(sim#olo = )){ )*/uscar match*) if(stac$0s1mpty(')) { )*(o hu#o match&&*) return(2-3'1) x=stac$.op('); % % if(stac$0s1mpty()) return T451; else return 2-3'1; )*-l,un sim#olo se !uedo dentro+
2&
APLICANDO PILAS
( ( ( (
2%
Y A!ORA" EL AL#ORITMO
stac$ ' = stac$(ew(); )*'e declara una pila s+ para almacenar los ( *) while(no hayamos leido toda la cadena) { ))tomar el si,uiente sim#olo de la expresion if(sim#olo = () )*-lmacenarlo*) stac$.ush('+sim#olo); if(sim#olo = )){ )*/uscar match*) if(stac$0s1mpty(')) { )*(o hu#o match&&*) return(2-3'1) x=stac$.op('); % % if(stac$0s1mpty()) return T451; else return 2-3'1; )*-l,un sim#olo se !uedo dentro+
22