class Coda {
/** Implementazione di una coda mediante vettore circolare */
private int[] V;
private int testa; // indice valore piu' vecchio private int coda; //prima posizione libera public Coda(int dim)
{ //vettore circolare V = new int[dim];
testa = 0;
coda = 0;
}
static public Coda enqueue(Coda c, int n){
if (codapiena(c)) System.out.println("Coda piena");
else { c.V[c.coda] = n; // inserisce n in coda c.coda = (c.coda+1)%(c.V).length;
// c.coda indica prima posizione libera }
return(c);
}
static public Coda dequeue(Coda c){
if (!codavuota(c)) c.testa = (++(c.testa))%(c.V).length;
//si incrementa testa di 1 per rimuovere un valore else System.out.println("coda vuota");
return(c);
}
static public int top(Coda c){
if (!codavuota(c)) return(c.V[c.testa]);
else { System.out.println("coda vuota");
return(-1);}
}
static public boolean codavuota(Coda c){
return(c.testa==c.coda); // coda c vuota sse c.testa==c.coda }
static public boolean codapiena(Coda c){ return((c.coda+1)%(c.V).length==c.testa);
//coda c piena sse c.testa == c.coda+1 modulo dimensione vettore c.V }
static public void stampacoda(Coda c){
while (!codavuota(c)){
System.out.println("elemento coda = "+top(c)); // stampa il valore piu' // vecchio nella coda c=dequeue(c);} // e lo rimuove
}
static public int dimensione(Coda c){
return(c.V.length);} // restituisce dimensione max della coda }// fine classe Coda
public class Provacoda {
public static void main(){
Coda c = new Coda(20);
c = Coda.enqueue(Coda.enqueue(c,3),-1);
System.out.println("primo ="+Coda.top(c));
Coda.stampacoda(c);
c = Coda.dequeue(c);
System.out.println("secondo ="+Coda.top(c));
}
} // fine classe Provacoda