Algorismes piles

De franhpWiki

Dreceres ràpides: navegació, cerca

Contingut

Pila

   estructura pila{
       enter cim;
       enter valors[100];
   }P;
   

Buidar

   buidar(&P)
   
   acció buidar(estructura pila *P)
       var enter i; fvar
       per(i<-0;i<-P->cim;i++){
           P->valors[i]<-NUL;
       }
       P->cim<-0;
   facció
   
   

Empilar, Posar un valor a la pila

   empilar(valor, &P);
   
   acció empilar(enter valor, estructura pila *P)
       P->valors[P->cim]<-valor;
       P->cim++;
   facció
   

DesEmpilar , treure un valor de la pila

   escriure(desempilar(&P));
   
   enter desempilar (estructura pila *P)
       var enter num; fvar
       num<-P->valors[P->cim-1];
       P->valors[P->cim-1]<-NUL;
       P->cim--;
       retorna num
   facció
   
   o
   
   si(P->cim=0) aleshores
       escriure("pila buida");
       retorna NUL;
   sino
   valor<-(p->valor[p->cim-1]);
   (p->valor[p->cim-1])<-NUL
   p->cim--;

Cim , torna el valor del element del cim

   escriure(cim(&P));
   
   enter cim (estructura pila *P)
       return(P->valors[P->cim-1]);
   ffunció
   

Buida? , indica si la pila = buida

   escriure(buida(&P));
   
   bool buida (estructura pila *P)
       var enter i; fvar
       si(P->cim = 0) retorna FALSE;
       per(i<-0;i<-P->cim;i++)
           si(P->valors[i]!=NUL)
               retorna FALSE;
           fsi
       fper
       retorna TRUE;
   ffunció
   
   

Ple?, indica si la pila = plena

   escriure(ple(&P));
   
   bool ple(estructura pila *P)
       var enter i;fvar
       per(i<-0;i<-P->cim;i++)
           si(P->valors[i]==NUL)
               retorn FALSE;
           fsi
       fper
       retorna TRUE;
   ffunció
Eines de l'usuari