#include <iostream.h>
#include <stdlib.h>

const int maxqsize= 50;

class queue
{  int qlist [maxqsize];
	int front,rear,count;

	public:
		 queue() {front=0; rear=0; count=0;};

		 //metodi verifica
		 int qfull();
		 int qempty();
		 int qlenght();

		 //accesso
		 int qfront();

		 //modifica;
		 void qinsert(int );
		 int qdelete();
		 void clearqueue();
		 } ;


int queue::qfull() {return count == maxqsize;}
int queue::qempty() {return count==0;};
int queue::qfront() {if(qempty())
							  {cout<<"vuoto"<<endl;
								exit(1);
								};
							 return qlist[front];
							};
void queue::qinsert(int x) {if(qfull())
								{cout<<"pieno"<<endl;
								 exit (1);
								 };
								count++;
								qlist [rear]=x;
								rear= (rear+1)%maxqsize;
								};
int queue::qdelete() {if (qempty())
								 {cout<<"vuoto"<<endl;
								  exit(1);
							 };
							 int temp;
							 temp= qlist[front];
							 count--;
							 front=(front+1)%maxqsize;
							 return temp;
};
void queue::clearqueue() {count=0; front=0; rear=0;};

void main() {
				queue q;
				q.qinsert(10);
				q.qinsert(20);
				q.qinsert(30);
				cout<<"Elemento alla testa della coda:" <<q.qfront()<<endl;
				if(!q.qempty()) {cout<<"Elemento estratto dalla testa:"<<q.qdelete()<<endl;
				};
				cout<<"Elemento alla testa della coda:" <<q.qfront()<<endl;
				q.clearqueue();
            cout<<"Elemento alla testa della coda:" <<q.qfront()<<endl;

				}




