/*coda2.cpp*/

#include "coda2.h"

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

void inserisci (coda &q, int x)
{
// Se in sta per doppiare out, segnaliamo un problema di lista piena
if ( q.in == q.out-1 || q.in == q.lunghezza-1 && q.out == 0 ) {
// Segnalare errore e terminare la funzione: la coda è piena!!
}
q.v [q.in++] = x;

// Se siamo arrivati in fondo al vettore, torniamo all'inizio
if ( q.in == q.lunghezza )
q.in = 0;
}

int estrai (coda &q)
{
if ( vuota(q) ) {
// Segnalare errore e terminare.
}
int n = q.v[q.out++];
if ( q.out == q.lunghezza )
q.out = 0;
return n;
}

bool vuota (coda &q)
{
return q.in == q.out;
}

void termina (coda &q)
{
delete [] q.v;
}