typedef struct
{
 Stato pila[MAXARR];
 int pos;
 int max;
} Pila;

//---------------------------------------------------------------------------
// L'elemento 0 e' inutilizzato: pos = posizione ultimo e numero elementi
int pushSt(Pila *p, Stato s)
{
 if (p->pos < p->max) p->pila[++p->pos] = s;
 else return 0;
 return p->pos;
}
//---------------------------------------------------------------------------
int popSt(Pila *p, Stato *s)
{
 if (p->pos > 0) *s = p->pila[p->pos--];
 else return 0;
 return p->pos;
}

//---------------------------------------------------------------------------
void initpilaSt(Pila *p)
{
 p->max =100;
 p->pos =0;
}
//---------------------------------------------------------------------------
int lastSt(Pila *p, Stato *s)
{
 if (p->pos > 0) *s = p->pila[p->pos];
 else return 0;
 return p->pos;
}