Pilhas
ProjetodeAlgoritmos|LinguagemC|I
ndice
Pilhas
Umapilhae
umaestruturadedadosqueadmiteremoa
odeelementoseinsera
odenovosobjetos.Mais
especi icamente,umapilha(=stack)e
umaestruturasujeitaa
seguinteregradeoperaa
o:sempreque
houverumaremoa
o,
oelementoremovidoe
oqueesta
naestruturaha
menostempo.
Emoutraspalavras,oprimeiroobjetoaserinseridonapilhae
ou
ltimoaserremovido.Essapol
ticae
conhecidapelasiglaLIFO(=LastInFirstOut).
Implementaoemumvetor
Suponhaquenossapilhaesta
armazenadaemumvetorpilha[0..N1].(Anaturezadoselementosdo
vetore
irrelevante:elespodemserinteiros,caracteres,ponteiros,etc.)Digamosqueapartedovetor
ocupadapelapilhae
pilha[0..t1].
O
ndicetindicaaprimeiraposia
ovagadapilhaet1e
o
ndicedotopodapilha.Apilhaesta
vaziaset
vale0echeiasetvaleN.Noexemploda igura,oscaracteresA,B,,Hforaminseridosnapilhanessa
ordem:
0
N1
Pararemover,outirar,umelementodapilhaestaoperaa
oe
conhecidacomodesempilhar(=topop)
faa
x=pilha[t]
Issoequivaleaopardeinstruo
es"t=1x=pilha[t]",nessaordem.E
claroquevoce
so
deve
desempilharsetivercertezadequeapilhana
oesta
vazia.
Parainserir,oucolocar,umobjetoynapilhaaoperaa
oe
conhecidacomoempilhar(=topush)faa
pilha[t++]=y
http://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html
1/10
11/09/2016
Pilhas
Issoequivaleaopardeinstruo
es"pilha[t]=yt+=1",nessaordem.Antesdeempilhar,certi ique
sedequeapilhana
oesta
cheia,paraevitarumtransbordamento(=overlow).
E
convenienteembalaressasoperao
esempequenasfuno
es.Seosobjetoscomqueestamoslidandosa
o
caracteres,porexemplo,podemosescrever
chardesempilha(void){
returnpilha[t]
}
voidempilha(chary){
pilha[t++]=y
}
Estamossupondoaquiqueasvaria
veispilhaetsa
oglobais,istoe
,foramdeclaradasforadoco
digodas
funo
es.(Paracompletaropacote,precisar
amosdemaistre
sfuno
es:umaquecrieumapilha,umaque
veri iqueseapilhaesta
vaziaeumaqueveri iqueseapilhaesta
cheia.Vejaexerc
cioabaixo.)
Exerccios1
1.Suponhaque,diferentementedaconvena
oadotadanotexto,apartedovetorocupadapelapilhae
pilha[1..t].Escrevaoco
digodasfuno
esempilha,desempilha,pilhavaziaepilhacheia.
2.Escrevaumalgoritmoqueuseumapilhaparainverteraordemdasletrasdecadapalavradeumastring,
preservandoaordemdaspalavras.Porexemplo,paraastringESTEEXERCICIOEMUITOFACILo
resultadodeveserETSEOICICREXEEOTIUMLICAF.
3.M