#include <iostream>

#define type int

using namespace std;

class Queue {
private:
	type data[100];
	int back; // top in stack
	const static int front = 0;
	void shift() {
		for( int i=0; i< back; i++ )
			data[i] = data[i+1];
		back--;
	}
public:
	Queue() { back = -1; }; // same as stack
	void enQ(type v) { data[++back] = v; } // same as stack
	type deQ() { type val = data[front]; shift(); return val; }
	int count() { return back+1; } // same as stack
	type getFront() { return data[front]; }
	type getBack() { return data[back]; }
	bool isEmpty() { return (back==-1); } // same as stack
	void clear() { back = -1; } // same as stack
	void show() { for(int i=0; i <= back; i++ ) {cout << data[i] << " ";} cout << endl; }
};

int main() {
	Queue myq;
	myq.enQ( 1);
	myq.enQ( 2);
	myq.enQ( 3);
	myq.enQ( 4);
	myq.enQ( 5);
	myq.show();
	cout<< myq.deQ() << endl;
	cout<< myq.deQ() << endl;
	cout<< myq.deQ() << endl;
	myq.show();
	cout<< myq.deQ() << endl;
	cout<< myq.deQ() << endl;
	if( myq.isEmpty() )
		cout << "The queu is empty now" << endl;
	system("pause");
}