7/26/2019 Aula Pilha Fila Dinamica
1/35
!"#$% ' ("#% )"*+,"-%
./0123 !"#$%#"&'()& $+ ,%-.)+/0#&)"1-"4#"*%312')('()& 3$ 3&3.2 $ &45.)"'+.2 .5636782
!027'112039:)5". 9.(;& 5+&"4?#.+
6/0,%@ A7B7?ACA7B7?B $ A77D?A !'0:2;23E
','1?0'@AFA7BA
7/26/2019 Aula Pilha Fila Dinamica
2/35
!"#$% )"*+,"-%
G H"48& I($ #.3"J#&+.2 &%'$)".)+$%'$ $)& $2'/0#&C3&3. I($ (04";&K& K$'.)$2?
G5.)& I($ L/ #.3"J#&+.2 & 4"2'& $%#&3$&3&CH.3$+.2 (04";&M4& H&)& #.3"J#&) %.22& H"48&
3"%N+"#&?
G%'$2 3$ H).22$5(")C H$%2$ #.+. 2$)"& $2'$ #O3"5.?
7/26/2019 Aula Pilha Fila Dinamica
3/35
!"#$% )"*+,"-%
G $2')('()& 3& H"48& : P$+ 2"+H4$2C H)$#"2&%3.&H$%&2 3$ (+& 4"2'& H&)& &)+&;$%&) .2 $4$+$%'.2?
7/26/2019 Aula Pilha Fila Dinamica
4/35
!"#$% ;"*+,"-%
G5.)& H)$#"2&+.2 #.3"J#&) . 0H. &P2')&'. 4"2'&C#.3"J#&%3. &2 +$2+&2 .H$)&QR$2 I($ -.)&+
#.3"J#&3&2 H&)& & H"48& $2'/0#&?
S"48&T #)"&S"48& UVW
"%' H"48&X&;"&UVW
K."3 $+H"48& US"48& THC "%' YVW
"%' 3$2$+H"48&UVW
"%' '.H.UVW
"%' H"48&
7/26/2019 Aula Pilha Fila Dinamica
5/35
@4'0%AB'1 ;% !"#$%
B?
G4.#&+.2 & /)$& 3$ +$+O)"& 3& H"48&?
A?
,%"#"&4";&+.2 & 4"2'& 3& H"48& #.+ 4"2'& K&;"&?
E?
Z$'.)%&+.2 & H"48&?
Pilha* criaPilha (){
Pilha* p =(Pilha*)malloc (sizeof(Pilha));
p->l = Vazia();
returnp;
}
1.
2.
3.
7/26/2019 Aula Pilha Fila Dinamica
6/35
@4'0%AB'1 ;% 4"#$%
X$)"J#&) 2$ & H"48& $2'& K&;"& : K$)"J#&) 2$ & 4"2'& $2'&K&;"&?
intpilhaVazia (Pilha* p) {returnp->l == Vazia();
}
7/26/2019 Aula Pilha Fila Dinamica
7/35
@4'0%AB'1 ;% 4"#$%
1+H"48&) (+ $4$+$%'. !%& H"48& : &3"#".%/M4. %&4"2'&?
voidempilha (Pilha *p, intx) {p->l = Cons (x, p->l);
}
7/26/2019 Aula Pilha Fila Dinamica
8/35
@4'0%AB'1 ;% 4"#$%
Z$'.)%&) . $4$+$%'. 3. '.H. : )$'.)%&) . $4$+$%'.I($ $2'/ %& #&P$Q& 3& 4"2'&C .( 2$L&C . [40+.
&3"#".%&3.?
inttopo (Pilha* p) {returncabeca(p->l);
}
7/26/2019 Aula Pilha Fila Dinamica
9/35
@4'0%AB'1 ;% 4"#$%
G .H$)&Q\. 3$2$+H"48&C &4:+ 3$ )$'.)%&) .$4$+$%'. 3. '.H. 3& H"48&C H)$#"2& )$+.K]M4.?
intdesempilha (Pilha* p) {intx = topo (p);
p->l = calda (p->l);returnx;
}
Remove o
elemento da
cabea da pilha
7/26/2019 Aula Pilha Fila Dinamica
10/35
9$)/ I($ H.22. #.3"J#&) (+& J4& 3"%N+"#&
(2&%3. & 4"2'& $%#&3$&3& I($ L/ '$%8.
H).%'&^ _ I($ K.#]2 &+ ^
7/26/2019 Aula Pilha Fila Dinamica
11/35
G J4& 3"-$)$ 3& H"48& H$4. -&'. 3$ I($ %&
H"48& "%2$)"+.2 $ )$+.K$+.2 3$ (+&
+$2+& $Y')$+"3&3$? `& J4& $( "%2"). $+
(+& $Y')$+"3&3$ $ )$+.K$ $+ .(')&?
7/26/2019 Aula Pilha Fila Dinamica
12/35
1%'\.C H)$#"2. #)"&) +&"2 (+& .H$)&Q\.
H&)& & 4"2'&? a(&4 2$)"& ^
7/26/2019 Aula Pilha Fila Dinamica
13/35
1%'\.C H)$#"2. #)"&) +&"2 (+& .H$)&Q\.
H&)& & 4"2'&? a(&4 2$)"& ^
,%2$)$b"+C I($ ")/ "%2$)") . $4$+$%'. %.
J+ 3& 4"2'&?
7/26/2019 Aula Pilha Fila Dinamica
14/35
.2;"C-%*;2
G3"#".%&%3. & .H$)&Q\. I($ "%2$)$ (+ $4$+$%'. %.J+ 3& 4"2'&?
Lista* insereFim (intx, Lista* l) {
Lista* aux;
if(l == Vazia()) returnCons (x, l);aux = l;
while(calda(aux))aux = calda(aux);
aux->calda = Cons (x, Vazia());
returnl;
}
7/26/2019 Aula Pilha Fila Dinamica
15/35
.2;"C-%*;2
G3"#".%&%3. & .H$)&Q\. I($ "%2$)$ (+ $4$+$%'. %.J+ 3& 4"2'&?
Lista* insereFim (intx, Lista* l) {
Lista* aux;
if(l == Vazia()) returnCons (x, l);aux = l;
while(calda(aux))aux = calda(aux);
aux->calda = Cons (x, Vazia());
returnl;
}
Se minha lista vazia, ento j
estou no fim dalista.
7/26/2019 Aula Pilha Fila Dinamica
16/35
.2;"C-%*;2
G3"#".%&%3. & .H$)&Q\. I($ "%2$)$ (+ $4$+$%'. %.J+ 3& 4"2'&?
Lista* insereFim (intx, Lista* l) {
Lista* aux;
if(l == Vazia()) returnCons (x, l);aux = l;
while(calda(aux))aux = calda(aux);
aux->calda = Cons (x, Vazia());
returnl;
}
Ou precisopercorrer a lista at
o fim.
7/26/2019 Aula Pilha Fila Dinamica
17/35
.2;"C-%*;2
G3"#".%&%3. & .H$)&Q\. I($ "%2$)$ (+ $4$+$%'. %.J+ 3& 4"2'&?
Lista* insereFim (intx, Lista* l) {
Lista* aux;
if(l == Vazia()) returnCons (x, l);aux = l;
while(calda(aux))aux = calda(aux);
aux->calda = Cons (x, Vazia());
returnl;
}
Ento possoadicion-lo ao fim
da lista.
7/26/2019 Aula Pilha Fila Dinamica
18/35
`\. $%'$%3" +("'. P$+C $2'$ #O3"5. :
"'$)&0K.C .2 I($ 0%8& -$"'. &': $%'\. $)&
'.3.2 )$#()2"K.?
7/26/2019 Aula Pilha Fila Dinamica
19/35
X.( &5.)& (2&) (+&
)$H)$2$%'&Q\. 5)/J#&
#.+(+ H&)& 4"2'&? 14& H.3$
'$ &L(3&) & $%'$%3$) $2'$#O3"5.
7/26/2019 Aula Pilha Fila Dinamica
20/35
L
7/26/2019 Aula Pilha Fila Dinamica
21/35
cL
7/26/2019 Aula Pilha Fila Dinamica
22/35
c 6L
7/26/2019 Aula Pilha Fila Dinamica
23/35
c 6L d
7/26/2019 Aula Pilha Fila Dinamica
24/35
c 6L d
7/26/2019 Aula Pilha Fila Dinamica
25/35
c 6L d
Ponteiro nulo,representa
lista vazia.
7/26/2019 Aula Pilha Fila Dinamica
26/35
c 6L d
Ponteiro nulo,representa
lista vazia.Calda, referido tambmcomo prximo
7/26/2019 Aula Pilha Fila Dinamica
27/35
c 6L d
Ponteiro nulo,representa
lista vazia.Calda, referido tambmcomo prximo
Adicionar no fim adicionar um novo n
neste ponto
7/26/2019 Aula Pilha Fila Dinamica
28/35
c 6L d
Ponteiro nulo,representa
lista vazia.Calda, referido tambmcomo prximo
Adicionar no fim adicionar um novo n
neste ponto
Ento, percorremos a lista at que
a calda seja nula, ou seja, no
tenha mais n. Ento adicionamosum novo n neste ponto.
7/26/2019 Aula Pilha Fila Dinamica
29/35
c 6L d
Ponteiro nulo,representa
lista vazia.Calda, referido tambmcomo prximo
Adicionar no fim adicionar um novo n
neste ponto
Ento, percorremos a lista at que
a calda seja nula, ou seja, no
tenha mais n. Ento adicionamosum novo n neste ponto.
Volteaocdigoereleia-
obuscandoentender
melhoroseu
funcionamentoantesde
prosseguir..
7/26/2019 Aula Pilha Fila Dinamica
30/35
G#8. I($ &5.)& L/ 2$" #.+. #.3"J#&) & J4&
3"%N+"#&?
7/26/2019 Aula Pilha Fila Dinamica
31/35
.2;"C-%*;2
G $2')('()& K&" 2$) 2"+"4&) & 3& H"48&C &H$%&2 #.+ (+&')"P('. I($ : & 4"2'&@
typedefstruct{Lista* l;}Fila;
7/26/2019 Aula Pilha Fila Dinamica
32/35
.2;"C-%*;2
_ #.%2')('.) '&+P:+ : 2"+"4&) &. 3& H"48&?
Fila* criaFila () {Fila* f =
(Fila*) malloc (sizeof(Fila));f->l = Vazia();returnf;
}
7/26/2019 Aula Pilha Fila Dinamica
33/35
.2;"C-%*;2
G 3$2$%J4$")& : 2"+"4&) & 3$2$+H"48&?
intdesenfileira (Fila* f) {intx = cabeca (f->l);
f->l = calda (f->l);
returnx;}
7/26/2019 Aula Pilha Fila Dinamica
34/35
.2;"C-%*;2
`& $%J4$")& #8&+&+.2 & .H$)&Q\. I($ "%2$)$ (+$4$+$%'. %. J+ 3& 4"2'&?
voidenfileira (Fila* f, intx) {
f->l = insereFim(x,f->l);}
7/26/2019 Aula Pilha Fila Dinamica
35/35
1YH$)"+$%'$+ '.3.2 .2#O3"5.2 -$"'.2 %$2'& &(4& $
&2 &0K"3&3$2 H.2'&3&2 %.
2"'$?
G': 4.5. e
Top Related