Você está na página 1de 14

Universidade Federal de Campina Grande

Centro de Cincias e Tecnologia


Departamento de Sistemas e Computao
Disciplina: Tcnicas de Programao
Prof.: os! "ust#$uio %angel de &ueiro'
D(SC(P)(*+
Tcnicas de Programao
Notas de Aula Filas & Pilhas
Tcnicas de Programao
________________________________________________________________
Universidade Federal de Campina Grande
DSC/CCT/UFCG
2
Tcnicas de Programao
________________________________________________________________
Filas e Pil,as - )inguagem C
".emplo de implementao de rotinas
/#sicas para manipulao de F()+S
TurboC++ 3.
!""""""""""""""""""""""""""""""""""""""""""""""""""""""""
F#$A
%%%%%%
&otinas basicas de mani'ulacao de F#$A( usando )etores*
% +struturas de dados com alocacao estatica
% #nsere no ,inal da ,ila
% &emocao do inicio da ,ila
% Fila circular
A'licacao ti'ica*
% $ista de elementos a es'era de um tratamento-
em .ue a ordem de chegada e im'ortante
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""!
/include 0stdio.h1
/include 0conio.h1
/de,ine 2A34F#$A 5
/de,ine FA$(6
/de,ine 7+&8A8+#&6 5
/de,ine 69 5
/de,ine +&&6
t:'ede, int Ti'o48ado;
t:'ede, struct
<
Ti'o48ado 8ado =2A34F#$A>;
int #nicio-Fim;
? Ti'o4Fila;
!" &otinas de 2ani'ulacao de F#$A( % First #n- First 6ut @F#F6A Alocacao se.uencial
"!
)oid inicialiBa4,ila @FA
Ti'o4Fila "F;
<
F%1#nicioC;
F%1FimC;
?
int insere4,ila @F-8adoA
Ti'o4Fila "F;
Ti'o48ado 8ado;
<
int 'roD;
'roDCF%1Fim+5;
DSC/CCT/UFCG
3
Tcnicas de Programao
________________________________________________________________
i, @'roD CC 2A34F#$AA
'roDC;
i, @'roD CC F%1#nicioA
return@+&&6A;
else
<
F%18ado=F%1Fim>C8ado;
F%1FimC'roD;
return@69A;
?
?
int retira4,ila @F-8adoA
Ti'o4Fila "F;
Ti'o48ado "8ado;
<
i, @F%1Fim CC F%1#nicioA
return@+&&6A;
else
<
"8adoC F%18ado=F%1#nicio>;
@F%1#nicioA++;
i, @F%1#nicio 1C 2A34F#$AA
F%1#nicioC;
return@69A;
?
?
)oid lista4,ila @FA
Ti'o4Fila F;
<
int cont;
'rint,@EFnEA;
contCF.#nicio;
Ghile @cont HC F.FimA
<
'rint,@EFila=Id>CIdFnE-cont-F.8ado=cont>A;
cont++;
i, @cont 1C 2A34F#$AA
contC;
?
'rint,@EFnEA;
?
int consulta4,ila @F-#ndice-8adoA
Ti'o4Fila F;
int #ndice;
Ti'o48ado "8ado;
<
i, @F.Fim 1 F.#nicioA
i, @@#ndice 0C F.#nicioA JJ @#ndice 1 F.FimA JJ
@#ndice 1C 2A34F#$AA JJ @#ndice 0 AA
return@+&&6A;
else
i, @@@#ndice 1 F.FimA && @#ndice 0C F.#nicioAA JJ
@#ndice 1C 2A34F#$AA JJ @#ndice 0 AA
return@+&&6A;
else
<
"8adoCF.8ado=#ndice>;
DSC/CCT/UFCG
4
Tcnicas de Programao
________________________________________________________________
return@69A;
?
?
int acha4,ila @F-8ado-#ndiceA
Ti'o4Fila F;
Ti'o48ado 8ado;
int "#ndice;
<
int cont;
int achou;
achouCFA$(6;
cont C F.#nicio;
"#ndice C NK$$;
Ghile @cont HC F.FimA
<
cont++;
i, @cont CC 2A34F#$AA
contC;
i, @F.8ado=cont> CC 8adoA
<
achouC7+&8A8+#&6;
"#ndiceCcont;
breaL;
?
?
i, @achouA
return@69A;
else
return@+&&6A;
?
int cheia4,ila @FA
Ti'o4Fila F;
<
i, @@F.Fim+5 CC F.#nicioA JJ @F.Fim+5 1 2A34F#$AAA
return@69A;
else
return@+&&6A;
?
int )aBia4,ila @FA
Ti'o4Fila F;
<
i, @F.Fim CC F.#nicioA
return@69A;
else
return@+&&6A;
?
int .uantidade4,ila @FA
Ti'o4Fila F;
<
i, @F.Fim 1 F.#nicioA
return@F.Fim%F.#nicioA;
else
return@F.Fim+@2A34F#$A%5A%F.#nicioA;
?
DSC/CCT/UFCG

Tcnicas de Programao
________________________________________________________________
!" P&6M&A2A P&#NC#PA$ "!
main@A
<
Ti'o4Fila Fila;
int 7alor;
'rint,@EFn111 &6T#NA( 8+ 2AN#PK$ACA6 8+ F#$A( 000FnFnEA;
inicialiBa4,ila@&FilaA;
i, @)aBia4,ila@FilaAA
'rint,@EC1 Fila )aBiaFnEA;
i, @insere4,ila@&Fila-NAA
'rint,@EC1 7alor N inserido na ,ilaFnEA;
i, @insere4,ila@&Fila-OAA
'rint,@EC1 7alor O inserido na ,ilaFnEA;
i, @insere4,ila@&Fila-PAA
'rint,@EC1 7alor P inserido na ,ilaFnEA;
'rint,@EFnC1 +lementos da ,ila... =inicio ao ,im>FnEA;
lista4,ila@FilaA;
i, @acha4,ila@Fila-O-&7alorAA
'rint,@EC1 6 )alor O ,oi achado na 'osicao IdFnE-7alorA;
i, @Hacha4,ila@Fila-Q-&7alorAA
'rint,@EC1 6 )alor Q nao ,oi achado na ,ilaFnEA;
i, @retira4,ila@&Fila-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
i, @retira4,ila@&Fila-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
i, @retira4,ila@&Fila-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
'rint,@EPressione uma tecla 'ara continuar...FnEA;
getch@A;
'rint,@EFnC1 +lementos da ,ila... =inicio ao ,im>FnEA;
lista4,ila@FilaA;
i, @)aBia4,ila@FilaAA
'rint,@EC1 Fila )aBiaFnEA;
'rint,@EPressione uma tecla 'ara terminar o 'rograma...FnEA;
getch@A;
?
DSC/CCT/UFCG
!
Tcnicas de Programao
________________________________________________________________
8e)%C++
!""""""""""""""""""""""""""""""""""""""""""""""""""""""""
F#$A
%%%%%%
&otinas basicas de mani'ulacao de F#$A( usando )etores*
% +struturas de dados com alocacao estatica
% #nsere no ,inal da ,ila
% &emocao do inicio da ,ila
% Fila circular
A'licacao ti'ica*
% $ista de elementos a es'era de um tratamento-
em .ue a ordem de chegada e im'ortante
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""!
/include 0stdio.h1
/include 0conio.h1
/de,ine 2A34F#$A 5
/de,ine FA$(6
/de,ine 7+&8A8+#&6 5
/de,ine 69 5
/de,ine +&&6
t:'ede, int Ti'o48ado;
t:'ede, struct
<
Ti'o48ado 8ado=2A34F#$A>;
int #nicio-Fim;
? Ti'o4Fila;
!" &otinas de 2ani'ulacao de F#$A( % First #n- First 6ut @F#F6A Alocacao se.Rencial
"!
)oid inicialiBa4,ila @Ti'o4Fila "FA
<
F%1#nicioC;
F%1FimC;
?
int insere4,ila @Ti'o4Fila "F-Ti'o48ado 8adoA
<
int 'roD;
'roDCF%1Fim+5;
i, @'roD CC 2A34F#$AA
'roDC;
i, @'roD CC F%1#nicioA
return@+&&6A;
else
<
F%18ado=F%1Fim>C8ado;
F%1FimC'roD;
DSC/CCT/UFCG
"
Tcnicas de Programao
________________________________________________________________
return@69A;
?
?
int retira4,ila @Ti'o4Fila "F-Ti'o48ado "8adoA
<
i, @F%1Fim CC F%1#nicioA
return@+&&6A;
else
<
"8adoC F%18ado=F%1#nicio>;
@F%1#nicioA++;
i, @F%1#nicio 1C 2A34F#$AA
F%1#nicioC;
return@69A;
?
?
)oid lista4,ila @Ti'o4Fila FA
<
int cont;
'rint,@EFnEA;
contCF.#nicio;
Ghile @cont HC F.FimA
<
'rint,@EFila=Id>CIdFnE-cont-F.8ado=cont>A;
cont++;
i, @cont 1C 2A34F#$AA
contC;
?
'rint,@EFnEA;
?
int consulta4,ila @Ti'o4Fila F-int #ndice-Ti'o48ado "8adoA
<
i, @F.Fim 1 F.#nicioA
i, @@#ndice 0C F.#nicioA JJ @#ndice 1 F.FimA JJ
@#ndice 1C 2A34F#$AA JJ @#ndice 0 AA
return@+&&6A;
else
i, @@@#ndice 1 F.FimA && @#ndice 0C F.#nicioAA JJ
@#ndice 1C 2A34F#$AA JJ @#ndice 0 AA
return@+&&6A;
else
<
"8adoCF.8ado=#ndice>;
return@69A;
?
?
int acha4,ila @Ti'o4Fila F-Ti'o48ado 8ado-int "#ndiceA
<
int cont;
int achou;
achouCFA$(6;
cont C F.#nicio;
"#ndice C NK$$;
Ghile @cont HC F.FimA
<
cont++;
i, @cont CC 2A34F#$AA
DSC/CCT/UFCG
#
Tcnicas de Programao
________________________________________________________________
contC;
i, @F.8ado=cont> CC 8adoA
<
achouC7+&8A8+#&6;
"#ndiceCcont;
breaL;
?
?
i, @achouA
return@69A;
else
return@+&&6A;
?
int cheia4,ila @Ti'o4Fila FA
<
i, @@F.Fim+5 CC F.#nicioA JJ @F.Fim+5 1 2A34F#$AAA
return@69A;
else
return@+&&6A;
?
int )aBia4,ila @Ti'o4Fila FA
<
i, @F.Fim CC F.#nicioA
return@69A;
else
return@+&&6A;
?
int .uantidade4,ila @Ti'o4Fila FA
<
i, @F.Fim 1 F.#nicioA
return@F.Fim%F.#nicioA;
else
return@F.Fim+@2A34F#$A%5A%F.#nicioA;
?
!" P&6M&A2A P&#NC#PA$ "!
main@A
<
Ti'o4Fila F;
int 7alor;
'rint,@EFn111 &6T#NA( 8+ 2AN#PK$ACA6 8+ F#$A( 000FnFnEA;
inicialiBa4,ila@&FA;
i, @)aBia4,ila@FAA
'rint,@EC1 F )aBiaFnEA;
i, @insere4,ila@&F-NAA
'rint,@EC1 7alor N inserido na ,ilaFnEA;
i, @insere4,ila@&F-OAA
'rint,@EC1 7alor O inserido na ,ilaFnEA;
i, @insere4,ila@&F-PAA
'rint,@EC1 7alor P inserido na ,ilaFnEA;
DSC/CCT/UFCG
$
Tcnicas de Programao
________________________________________________________________
'rint,@EFnC1 +lementos da ,ila... =inicio ao ,im>FnEA;
lista4,ila@FA;
i, @acha4,ila@F-O-&7alorAA
'rint,@EC1 6 )alor O ,oi achado na 'osicao IdFnE-7alorA;
i, @Hacha4,ila@F-Q-&7alorAA
'rint,@EC1 6 )alor Q nao ,oi achado na ,ilaFnEA;
i, @retira4,ila@&F-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
i, @retira4,ila@&F-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
i, @retira4,ila@&F-&7alorAA
'rint,@EC1 7alor Id retirado da ,ilaFnE-7alorA;
'rint,@EPressione uma tecla 'ara continuar...FnEA;
getch@A;
'rint,@EFnC1 +lementos da ,ila... =inicio ao ,im>FnEA;
lista4,ila@FA;
i, @)aBia4,ila@FAA
'rint,@EC1 F )aBiaFnEA;
'rint,@EPressione uma tecla 'ara terminar o 'rograma...FnEA;
getch@A;
?
DSC/CCT/UFCG
%&
Tcnicas de Programao
________________________________________________________________
".emplo de implementao de rotinas
/#sicas para manipulao de P()0+S
TurboC++ 3.
!""""""""""""""""""""""""""""""""""""""""""""""""""""""""
P#$SA
%%%%%%%%
&otinas basicas de mani'ulacao de Pilha*
% +struturas de dados com alocacao estatica
% #nsercao no ,inal @to'oA do )etor
% &emocao do ,inal @to'oA do )etor
A'licacao ti'ica*
% 6 ultimo a entrar eh o 'rimeiro a sair
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""!
/include 0stdio.h1
/include 0conio.h1
/de,ine 2A34P#$SA 5
/de,ine FA$(6
/de,ine 7+&8A8+#&6 5
/de,ine 69 5
/de,ine +&&6
t:'ede, int Ti'o48ado;
t:'ede, struct
<
Ti'o48ado 8ado=2A34P#$SA>;
int Tase-To'o;
? Ti'o4Pilha;
!" &otinas de 2ani'ulacao de Pilha % $ista $inear (e.Rencial "!
)oid inicialiBa4'ilha @PA
Ti'o4Pilha "P;
<
P%1TaseC;
!! como ,oi 'assado o endereo da estrutura- o acesso ,eito atra)s do sUmbolo %1
P%1To'oC;
?
int insere4'ilha @P- 8adoA
Ti'o4Pilha "P;
Ti'o48ado 8ado;
<
i, @P%1To'o 0 2A34P#$SAA !" 7etor nao esta cheio V "!
<
P%18ado=P%1To'o>C8ado;
@P%1To'oA++;
return@69A;
?
else
return@+&&6A;
DSC/CCT/UFCG
%%
Tcnicas de Programao
________________________________________________________________
?
retira4'ilha @P- 8adoA
Ti'o4Pilha "P;
Ti'o48ado "8ado;
<
i, @P%1To'o CC P%1TaseA
return@+&&6A;
else
<
@P%1To'oA%%;
"8adoCP%18ado=P%1To'o>;
return@"8adoA;
?
?
)oid eDibe4'ilha @PA
Ti'o4Pilha P;
<
Ti'o48ado dado;
int cont;
'rint,@EFnEA;
,or @contC@P.To'oA%5; cont 1C @P.TaseA; cont%%A
'rint,@E7etor=Id>CIdFnE-cont-P.8ado=cont>A;
'rint,@EFnEA;
?
int .uantidade4'ilha @PA
Ti'o4Pilha P;
<
return@ P.To'o%P.Tase A;
?
int cheia4'ilha @PA
Ti'o4Pilha P;
<
i, @P.To'o CC 2A34P#$SAA
return@69A;
else
return@H69A;
?
int )aBia4'ilha @PA
Ti'o4Pilha P;
<
i, @P.To'o CC P.TaseA
return@69A;
else
return@H69A;
?
int es)aBia4'ilha @PA
Ti'o4Pilha "P;
<
P%1To'oC;
P%1TaseC;
?
!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DSC/CCT/UFCG
%2
Tcnicas de Programao
________________________________________________________________
+3+2P$6 8+ AP$#CACA6 5* P&6M&A2A P&#NC#PA$
6 'rograma abaiDo ilustra a 'ossibilidade 'ara re)erter uma certa se.uencia de
)alores numericos inseridos ate .ue seWa digitado o )alor XXX.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!
)oid main@A
<
int num- D;
Ti'o4Pilha P;
clrscr@A;
inicialiBa4'ilha@&PA;
'rint,@EFnArmaBene um numero* EA;
scan,@EIdE-&numA;
Ghile@ @num HCXXXA && @cheia4'ilha@PA HC 5AA <
insere4'ilha@&P-numA;
'rint,@EFnArmaBene um numero* EA;
scan,@EIdE-&numA;
?
'rint,@EFn(e.uencia $#F6FnEA;
Ghile@)aBia4'ilha@PA HC 5A <
DCretira4'ilha@&PA;
'rint,@EId E-DA;
?
getch@A;
?
!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+3+2P$6 8+ AP$#CACA6 N* P&6M&A2A P&#NC#PA$
6 'rograma abaiDo ilustra Con)erso de um nYmero decimal 'ara a base binZria-
utiliBando P#$SA(
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!
)oid main@A
<
int D-num-den- resto;
Ti'o4Pilha P;
clrscr@A;
inicialiBa4'ilha@&PA;
'rint,@EFn+ntre com o numero na base decimal* EA;
scan,@EIdE-&numA;
'rint,@EFn6 numero Id na base 5 %1 E-numA;
Ghile@ @num HCA && @cheia4'ilha@PA HC 5A A <
resto C numIN;
den C num!N;
num C den;
insere4'ilha@&P-restoA;
?
Ghile@)aBia4'ilha@PA HC 5A <
DCretira4'ilha@&PA;
'rint,@EIdE-DA;
?
'rint,@E na base NFnEA;
getch@A;
?
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
".erc1cio
DSC/CCT/UFCG
%3
Tcnicas de Programao
________________________________________________________________
".ecutar o e.emplo de P()0+ escrito para o TurboC++ no 8e)%C++ e analisar os
erros2 corrigindo3os. 4 $ue v. conclui deste e.erc1cio5
DSC/CCT/UFCG
%4

Você também pode gostar