#include #define MAX 20 int Dequeue(int Q[]) {int x=Q[Q[0]]; if (Q[0]+1 == Q[MAX+1]) {Q[0]=0; Q[MAX+1]=1; } else if (Q[0] == MAX) Q[0] = 1; else Q[0] = Q[0] + 1; return x; } void Enqueue(int Q[], int valore) { Q[Q[MAX+1]] = valore; if (Q[0]==0)Q[0]=1; if (Q[MAX+1] == MAX) Q[MAX+1]=1; else Q[MAX+1]= Q[MAX+1]+1; } void Stampa_Queue(int Q[]) { int i=Q[0]; printf("\n Head: %d ", Q[0]); printf("\n Teal: %d ", Q[MAX+1]); printf("\n Array attuale: "); if (Q[0]==0) printf(" QUEUE EMPTY "); else { do { printf("\|%d",Q[i]); if (iMAX) {printf("\n max %d elementi: ", MAX); scanf("%d",&size);} for (i=1;i<=size;i++) { printf("\nInserire il %d° elemento: ",i); scanf("%d",&Q[i]); } if (size>0) Q[0]=1; if (size==MAX) Q[MAX+1]=1; else Q[MAX+1]=size+1; do { Stampa_Queue(Q); printf("\n scelta 1-Dequeue, 2-Enqueue, 3-USCITA : "); scanf("%d",&scelta); switch (scelta) { case 1: if (!EmptyQueue(Q)) printf("\n Ecco il valore in testa %d", Dequeue(Q)); else printf("\n spiacente, coda vuota"); break; case 2: if (Q[0]!=Q[MAX+1]) { printf("\n valore da inserire nella coda: "); scanf("%d",&valore); Enqueue(Q,valore); } else printf("\n spiacente, coda piena"); } /* fine switch */ } /* fine do */ while(scelta==1||scelta==2); } /* fine main */