/*pila.cpp*/

#include "pila.h"

void inizializza (pila &p, int l)
{
// Per inizializzare una pila, la vuoto ponendo
// l'indice di inserimento uguale a quello di estrazione
p.testa = 0;
p.lunghezza = l;
p.v = new int [l];
}

void push (pila &p, int x)
{
// Se non c'è spazio, segnaliamo un problema di pila piena
if ( p.testa == p.lunghezza ) {
// Segnalare errore e terminare la funzione: la pila è piena!!
}
p.v[p.testa++] = x;
}

int pop (pila &p)
{
if ( vuota(p) ) {
// Segnalare errore e terminare.
}
return p.v[--p.testa];
}

bool vuota (pila &p)
{
return p.testa == 0;
}

void termina (pila &p)
{
delete [] p.v;
}

int top (pila &p)
{
if ( vuota(p) ) {
// Segnalare errore e terminare.
}
return p.v[p.testa-1];
}

void drop (pila &p)
{
if ( vuota(p) ) {
// Segnalare errore e terminare.
}
p.testa--;
}