aula pilha fila dinamica

Upload: rafafoa

Post on 02-Mar-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

  • 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