Você está na página 1de 13

08/04/14

As pilhas em linguagem C

Cadastresej Idioma Ingls Espanhol Alemo Francs Italiano Portugus Holands Conexo Identificao Nomedeusurio Senha(esqueceu?)
Conexo

Siganos
59.849

aBrasil

Recherche
Buscar

OK

Incio Frum Dicas Download Atualidades Artigos

Incio Dicas Programao Linguagens C AspilhasemlinguagemC

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

1/13

08/04/14

As pilhas em linguagem C

Impresso Faaumapergunta

AspilhasemlinguagemC
Curtir Tweet 0 Compartilhar 0 6

BRESFR Abril2014

Aspilhas
Requisitos I.INTRODUO II.Definio IV.Operaesnaspilhas A.Inicializao B.Inserodeumelementonapilha C.Tirarumelementodapilha D.Exibirapilha E.Recuperaododadonotopodapilha V.Exemplocompleto pilha.h pile_function.h pile.c VI.Vejatambm Vejatambm:Pilhaemlinguagemc

Pilha(stack)=umtipoabstratodedadoeestruturadedados

Requisitos
Ostiposdedados Asestruturas Ousodotypedef Osponteiros Asfunesdousurio Aslistassimplesmenteencadeadas Aslistasduplamenteencadeadas

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

2/13

08/04/14

As pilhas em linguagem C

I.INTRODUO
Estadicatemporobjetivoacompreensodaspilhas. Aescolhadeimplementaoemfunodeeventuaisnecessidadessua. Paraexplicaroalgoritmo,euusareiumalistasimplesmenteligada(ouencadeada).Assimsendo,acompreenso daslistasencadeadasnecessria.

II.Definio
ApilhaumaestruturadedadosquearmazenaosdadosnaordemLIFO(LastInFirstOut)emportugus ltimoaEntrarPrimeiroaSair). Arecuperaodedadosserfeitanaordeminversadesuainsero. Paraimplementar,escolhiumalistaligadasimplesmente,apresentadanavertical. Ainserosemprefeitanoinciodalista,oprimeiroelementodalistaseroltimodigitadoassim,asua posioficanotopodapilha. Eunouseiumponteirofino,comoeufiznocasodaslistassimplesmenteligadas,jqueoobjetivonoabordar umalistaligada,masapilha. Oquenosinteressaqueoltimoelementoinserido,sejaoprimeirorecuperado.

==III.Aconstruodoprottipodeumelementodapilha= Paradefinirumelementodapilhaserusadootipostruct. Oelementodapilhaconterumcampodadoeumponteiro"seguinte". Oponteiro"seguinte"deveserdomesmotipoqueoelemento,casocontrrioelenopoderapontarparao elemento. Oponteiro"seguinte"permitiroacessoparaoprximoelemento.

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

3/13

08/04/14

As pilhas em linguagem C

t y p e d e fs t r u c tE l e m e n t o L i s t a{ c h a r* d a d o ; s t r u c tE l e m e n t o L i s t a* s e g u i n t e ; } E l e m e n t o ;

Parapermitirasoperaesnapilha,vamossalvaralgunselementos: oprimeiroelemento onmerodeelementos

Oprimeiroelemento,queseencontranotopodapilha,nosajudararealizaraoperaoderecuperaodos dadossituadosnotopodapilha. Parafazlo,outraestruturadiferenteserutilizada(issonoobrigatrio,variveispodemserutilizadas). Vejaacomposio:


t y p e d e fs t r u c tL i s t a D e t e c t a d a { E l e m e n t o* i n c i o ; i n tt a m a n h o ; }P i l h a ;

Oponteirodeinciocontmoendereodoprimeiroelementodalista. Observao: Nsnovamosusarumponteirofinodestavez(vejaaslistassimplesmenteencadeadas),poisnoprecisamos,j questrabalharemoscomoinciodalista. Sejaqualforaposionalista,oponteirodeinciosempreapontaparaoprimeiroelemento,queestarnotopoda pilha. Ocampotamanhoconteronmerodeelementosdapilha,independentementedaoperaoefetuadanapilha.

IV.Operaesnaspilhas
A.Inicializao
Prottipodafuno:
v o i di n i c i a l i z a o( P i l h a* m o n t e ) ;

Estaoperaodeveserfeitoantesdequalqueroutraoperaodapilha. ElainicializaoponteirodoinciocomoponteiroNULLincio,eotamanhocomovalor0. Afuno


v o i di n i c i a l i z a o( P i l h a* m o n t e ) { m o n t e > i n c i o=N U L L ; m o n t e > t a m a n h o=0 ; }

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

4/13

08/04/14

As pilhas em linguagem C

B.Inserodeumelementonapilha
Vejaoalgoritmodeinseroedebackupdoscomponentes: Declaraodeelementosasereminseridos Alocaodamemriaparaonovoelemento Preencherocontedodocampodedados Atualizaroponteirodoincioparaoprimeiroelemento(otopodapilha) Atualizarotamanhodapilha

Prottipodafuno:
i n te m p i l h a r( P i l h a* m o n t e ,c h a r* a d o ) ;

Aprimeiraimagemmostraoinciodainsero,portanto,alistatemotamanho1depoisdainsero.A caractersticadapilhanoestbemrealadacomumnicoelemento,jqueonicoaserrecuperado.

Poroutrolado,nasegundaimagempodemosobservarocomportamentodapilha. Oquenodevemosesquecerqueaintegraosemprefeitanotopodapilha(noinciodalista).

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

5/13

08/04/14

As pilhas em linguagem C

Afuno
/ *e m p i l h a r( a d i c i o n a r )u me l e m e n t od ap i l h a* / i n te m p i l h a r( P i l h a*m o n t e ,c h a r* d a d o ) { E l e m e n t o* n o v o _ e l e m e n t o ; i f( ( n o v o _ e l e m e n t o=( E l e m e n t o* )m a l l o c( s i z e o f( E l e m e n t o ) ) )= =N U L L ) r e t u r n1 ; i f( ( n o v o _ e l e m e n t o > d a d o=( c h a r* )m a l l o c( 5 0*s i z e o f( c h a r ) ) ) = =N U L L ) r e t u r n1 ; s t r c p y( n o v o _ e l e m e n t o > d a d o ,d a d o ) ; n o v o _ e l e m e n t o > p r x i m o=m o n t e > i n c i o ; m o n t e >i n c i o=n o v o _ e l e m e n t o ; m o n t e > t a m a n h o + + ; }

C.Tirarumelementodapilha
Paraexcluir(removeroudesempilhar)oelementodapilha,bastaexcluiroelementoparaoqualapontaoponteiro deincio. Estaoperaonopermiterecuperarodadonotopodapilha,masapenasremovlo. Prottipodafuno:
i n td e s e m p i l h a r( P i l h a* m o n t e ) ;

Afunoretorna1emcasodefalha,casocontrrio,elaretorna0.

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

6/13

08/04/14

As pilhas em linguagem C

Passos: Oponteiroremov_elemconteroendereodoprimeiroelemento Oponteirodeincioapontarparaosegundoelemento(apsaremoodoprimeiroelemento,osegundo passarparaotopodapilha) Otamanhodapilhaserdecrementadodeumelemento

Afuno
i n td e s e m p i l h a r( P i l h a*m o n t e ) { E l e m e n t o* r e m o v _ e l e m e n t o ; i f( m o n t e > t a m a n h o= =0 ) r e t u r n1 ; r e m o v _ e l e m e n t o=m o n t e > i n c i o ; t a s >i n c i o=t a s > i n c i o > p r x i m o ; f r e e( r e m o v _ e l e m e n t o > d a d o ) ; f r e e( r e m o v _ e l e m e n t o ) ; m o n t e> t a m a n h o ; r e t u r n0 ; }

D.Exibirapilha
Paraexibirapilhainteira,precisoseposicionarnoinciodapilha(vocpoderfazerissocomoponteirode incio). Emseguida,usandooponteiro"seguinte"decadaelemento,apilhaseratravessadadoprimeiroatoltimo elemento. Acondiodeparadadadapelotamanhodapilha. Afuno
/ *e x i b i od ap i l h a* / v o i de x i b e( P i l h a*m o n t e ) {

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

7/13

08/04/14

As pilhas em linguagem C

E l e m e n t o* c o r r e n t e ; i n ti ; e mc u r s o =m o n t e > i n c i o ; f o r ( i = 0 ; i < t a s > t a m a n h o ; + + i ) { p r i n t f ( " \ t \ t % s \ n " ,c o r r e n t e > d a d o ) ; e mc u r s o=e mc u r s o > p r x i m o ; }

E.Recuperaododadonotopodapilha
Pararecuperarodadonotopodapilhasemremovlo,euuseiummacro.Omacrolosdadosdotopodapilha usandooponteirodoincio.
# d e f i n ep i l h a _ d a d o ( m o n t e ) m o n t e > i n c i o > d a d o

V.Exemplocompleto
pilha.h

/ * * * * * * * * * * * * * * * * * * * * * \ p i l h a . h *

\ * * * * * * * * * * * * * * * * * * * * * / t y p e d e fs t r u c tE l e m e n t o L i s t a { c h a r* d a d o ; s t r u c tE l e m e n t o L i s t a* s e g u i n t e ; }E l e m e n t o ; t y p e d e fs t r u c tL i s t a D e t e c t a d a { E l e m e n t o* i n c i o ; i n tt a m a n h o ; }P i l e ; / *i n i c i a l i z a o* / v o i di n i c i a l i z a o( P i l h a* m o n t e ) ; / *E M P I L E R * / i n te m p i l h a r( P i l h a* m o n t e ,c h a r* d a d o ) ; / *D E S E M P I L H A R * / i n td e s e m p i l h a r( P i l h a* m o n t e ) ; / *E x i b i od oe l e m e n t on ot o p od ap i l h a( L a s t I n F i r s t O u t )* / # d e f i n ep i l h a _ d a d o ( m o n t e ) m o n t e > i n c i o > d a d o / *E x i b eap i l h a* / v o i de x i b e( P i l h a* m o n t e ) ;

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

8/13

08/04/14

As pilhas em linguagem C

pile_function.h

/ * * * * * * * * * * * * * * * * * * * * * * * \ p i l e _ f u n c t i o n . h \ * * * * * * * * * * * * * * * * * * * * * * * / v o i di n i c i a l i z a o( P i l h a* m o n t e ) { t a s > i n c i o=N U L L ; t a s > t a m a n h o=0 ; } / *e m p i l h a r( a d i c i o n a r )u me l e m e n t on ap i l h a* / i n te m p i l h a r( P i l h a*m o n t e ,c h a r* d a d o ) { E l e m e n t o* n o v o _ e l e m e n t o ; i f( ( n o v o _ e l e m e n t o=( E l e m e n t o* )m a l l o c( s i z e o f( E l e m e n t o ) ) )= =N U L L ) r e t u r n1 ; i f( ( n o v o _ e l e m e n t o >d a d o=( c h a r* )m a l l o c( 5 0*s i z e o f( c h a r ) ) ) = =N U L L ) r e t u r n1 ; s t r c p y( n o v o _ e l e m e n t o > d a d o ,d a d o ) ; n o v o _ e l e m e n t o > s e g u i n t e=m o n t e > i n c i o ; m o n t e >i n c i o=n o v o _ e l e m e n t o ; m o n t e > t a m a n h o + + ; } / *d e s e m p i l h a r( e x c l u i ru me l e m e n t od ap i l h e* / i n td e s e m p i l h a r( P i l h a*m o n t e ) { E l e m e n t o* r e m o v _ e l e m e n t o ; i f( t a s > t a m a n h o= =0 ) r e t u r n1 ; r e m o v _ e l e m e n t o=m o n t e > i n c i o ; m o n t e >i n c i o=m o n t e > i n c i o > s e g u i n t e ; f r e e( r e m o v _ e l e m e n t o > d a d o ) ; f r e e( r e m o v _ e l e m e n t o ) ; m o n t e > t a m a n h o ; r e t u r n0 ; } / *e x i b i od ap i l h a* / v o i de x i b e( P i l h a*m o n t e ) { E l e m e n t o* e mc u r s o ; i n ti ; e mc u r s o=m o n t e > i n c i o ; f o r ( i = 0 ; i < m o n t e > t a m a n h o ; + + i ) { p r i n t f ( " \ t \ t % s \ n " ,e mc u r s o > d a d o ) ; e mc u r s o=e mc u r s o > s e g u i n t e ; } *

pile.c

/ * * * * * * * * * * * * * * * * * * * * * \ p i l e . c \ * * * * * * * * * * * * * * * * * * * * * / *

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

9/13

08/04/14

As pilhas em linguagem C

# i n c l u d e < s t d i o . h > # i n c l u d e < s t d l i b . h > # i n c l u d e < s t r i n g . h > # i n c l u d e" p i l e . h " # i n c l u d e" p i l e _ f u n c t i o n . h " i n tm a i n( ) { P i l h a* m o n t e ; c h a r* n o m e ; i f( ( m o n t e=( P i l h a* )m a l l o c( s i z e o f( P i l e ) ) )= =N U L L ) r e t u r n1 ; i f( ( n o m e=( c h a r* )m a l l o c( 5 0*s i z e o f( c h a r ) ) )= =N U L L ) r e t u r n1 ; i n i c i a l i z a o( m o n t e ) ; p r i n t f( " E n t r eu m ap a l a v r a : " ) ; s c a n f( " % s " ,n o m e ) ; e m p i l h a r( m o n t e ,n o m e ) ; p r i n t f( " Ap i l h a( % d ee l e m e n t o s ) :\ n " , m o n t e > t a m a n h o ) ; p r i n t f ( " \ n * * * * * * * * * *T o p od aP I L H A* * * * * * * * * * \ n " ) ; e x i b e ( m o n t e ) ; p r i n t f ( " _ _ _ _ _ _ _ _ _ _R o d a p d aP I L H A_ _ _ _ _ _ _ _ _ _ \ n \ n " ) ; p r i n t f( " E n t r eu m ap a l a v r a : " ) ; s c a n f( " % s " ,n o m e ) ; e m p i l h a r( m o n t e ,n o m e ) ; p r i n t f( " Ap i l h a( % d ee l e m e n t o s ) :\ n " , m o n t e > t a m a n h o ) ; p r i n t f ( " \ n * * * * * * * * * *T o p od aP I L H A* * * * * * * * * * \ n " ) ; e x i b e ( m o n t e ) ; p r i n t f ( " _ _ _ _ _ _ _ _ _ _R o d a p d aP I L H A _ _ _ _ _ _ _ _ _ _ \ n \ n " ) ; p r i n t f( " E n t r eu m ap a l a v r a : " ) ; s c a n f( " % s " ,n o m e ) ; e m p i l e r( m o n t e ,n o m e ) ; p r i n t f( " Ap i l h a( % d ee l e m e n t o s ) :\ n " , m o n t e > t a m a n h o ) ; p r i n t f ( " \ n * * * * * * * * * *T o p od aP I L H A* * * * * * * * * * \ n " ) ; e x i b e ( m o n t e ) ; p r i n t f ( " _ _ _ _ _ _ _ _ _ _R o d a p d aP I L H A_ _ _ _ _ _ _ _ _ _ \ n \ n " ) ; p r i n t f( " \ n O l t i m oe n t r a d o( L a s t I n F i r s t O u t )[% s]s e r e x c l u d o " , p i l h a _ d a d o ( m o n t e ) ) ; p r i n t f( " \ n O l t i m oe n t r a d os e r e x c l u d o \ n " ) ; d e s e m p i l h a r( m o n t e ) ; / *r e m o od o l t i m oe l e m e n t oe n t r a d o* / p r i n t f( " Ap i l h a( % de l e m e n t o s ) :\ n " , m o n t e > t a m a n h o ) ; p r i n t f ( " \ n * * * * * * * * * *T o p od aP I L H A* * * * * * * * * * \ n " ) ; e x i b e ( m o n t e ) ; p r i n t f ( " _ _ _ _ _ _ _ _ _ _R o d a p d aP I L H A_ _ _ _ _ _ _ _ _ _ \ n \ n " ) ; } r e t u r n0 ;

VI.Vejatambm
Aslistassimplesmenteencadeadas Aslistasduplamenteencadeadas Aslistascirculares Asfilas

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

10/13

08/04/14

As pilhas em linguagem C

TraduofeitaporLuciaMaurityyNouira
KioskeaBrasil
Curtir 59.849

AnnoncesGoogle BaixeAntivrusGratuito InstaleoAntivrusGratuitoPSafeELimpeseuPCdeAmeaas! www.psafe.com

Averigualmente
Pilhaemlinguagemc Pilhasligadasc "@piha.com.au" IntroduolinguagemCArtigos LinguagemCC/C++FalhadesegmentaoDicasC OsrecursosemlinguagemC/C++DicasC AsfilasemlinguagemCDicasC LinguagemCEstruturascondicionaisDicasC

Namesmacategoria
BaixarocontedodeumapaginaWEBdistante CompilarCnoLinux/UNIX CompilarumprogramaemCcomoDevC++ noVista Gerarnmerosaleatriosdeformaeficazcomo rand() Instalarumabiblioteca(library)compiladano CodeblockscomoMinGW IntroduolinguagemC LinguagemCC/C++Falhadesegmentao LinguagemCCadeiadecaracteres(string) LinguagemCEstruturascondicionais LinguagemCFunes

Comunidadedeassistnciaedeconselho.
Frum Programaofrum LaspilasenlenguajeC PorCarlosvialfaem16dejunhode2009 LespilesenlangageC Porlami20jem7dedezembrode2007 Artigooriginalpublicadoporlami20j.Traduofeitaporpintuda.

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

11/13

08/04/14

As pilhas em linguagem C

Curtir Tweet 0

Compartilhar 0

Estedocumento,intituladoAspilhasemlinguagemCapartirdeKioskea(pt.kioskea.net)estdisponibilizado sobalicenaCreativeCommons.Vocpodecopiar,modificarcpiasdestapgina,nascondiesestipuladaspela licena,comoestanotaaparececlaramente. LinguagemCEstruturascondicionaisAsfilasemlinguagemC

EncontrenosnoFacebook

KioskeaBrasil
Curtir

59.849pessoascurtiramKioskeaBrasil.

PluginsocialdoFacebook

Receberanossanewsletter
email

OK

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

12/13

08/04/14

As pilhas em linguagem C

KioskeaBrasil
Curtir 59.849

Inscrio Equipe Termosdeuso Contato Conveno CCMBenchmarkGroup LinguagemCEstruturascondicionais AsfilasemlinguagemC

pt.kioskea.net/faq/10218-as-pilhas-em-linguagem-c

13/13