#include<iostream>
using namespace std;
class Queue{
int arr[ 100 ] ,Front,rear,currSize,maxSize;
public :
Queue( int defaultSize = 7 ) {
Front = 0 ;
rear = defaultSize- 1 ;
currSize = 0 ;
maxSize = defaultSize;
arr[ maxSize] = { 0 } ;
}
bool IsFull( ) {
return currSize== maxSize;
}
bool IsEmpty( ) {
return currSize== 0 ;
}
void enqueue( int data) {
if ( ! IsFull( ) ) {
rear = ( rear+ 1 ) % maxSize;
currSize++ ;
}
}
void deqeue( ) {
if ( ! IsEmpty( ) ) {
Front = ( Front+ 1 ) % maxSize;
currSize-- ;
}
}
int getFront( ) {
return arr[ Front] ;
}
} ;
int main( ) {
Queue q;
for ( int i= 0 ; i< 6 ; i++ ) {
q.enqueue ( i) ;
}
q.deqeue ( ) ;
q.enqueue ( 8 ) ;
while ( ! q.IsEmpty ( ) ) {
cout << q.getFront ( ) << " " ;
q.deqeue ( ) ;
}
return 0 ; }
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIFF1ZXVlewogICAgaW50IGFyclsxMDBdLEZyb250LHJlYXIsY3VyclNpemUsbWF4U2l6ZTsKcHVibGljOgogICAgUXVldWUoaW50IGRlZmF1bHRTaXplID0gNyl7CiAgICBGcm9udCA9IDA7CiAgICByZWFyID0gZGVmYXVsdFNpemUtMTsKICAgIGN1cnJTaXplID0gMDsKICAgIG1heFNpemUgPSBkZWZhdWx0U2l6ZTsKICAgIGFyclttYXhTaXplXT17MH07CiAgICB9CiAgICBib29sIElzRnVsbCgpewogICAgICAgIHJldHVybiBjdXJyU2l6ZT09bWF4U2l6ZTsKICAgIH0KICAgIGJvb2wgSXNFbXB0eSgpewogICAgICAgIHJldHVybiBjdXJyU2l6ZT09MDsKICAgIH0KICAgIHZvaWQgZW5xdWV1ZShpbnQgZGF0YSl7CiAgICAgICAgaWYoIUlzRnVsbCgpKXsKICAgICAgICAgICAgcmVhciA9IChyZWFyKzEpJW1heFNpemU7CiAgICAgICAgICAgIGN1cnJTaXplKys7CiAgICAgICAgfQogICAgfQogICAgdm9pZCBkZXFldWUoKXsKICAgICAgICBpZighSXNFbXB0eSgpKXsKICAgICAgICAgICAgRnJvbnQgPSAoRnJvbnQrMSklbWF4U2l6ZTsKICAgICAgICAgICAgY3VyclNpemUtLTsKICAgICAgICB9CiAgICB9CiAgICBpbnQgZ2V0RnJvbnQoKXsKICAgIHJldHVybiBhcnJbRnJvbnRdOwogICAgfQoKfTsKCmludCBtYWluKCl7ClF1ZXVlIHE7CmZvcihpbnQgaT0wO2k8NjtpKyspewogICAgcS5lbnF1ZXVlKGkpOwp9CnEuZGVxZXVlKCk7CnEuZW5xdWV1ZSg4KTsKd2hpbGUoIXEuSXNFbXB0eSgpKXsKICAgIGNvdXQ8PHEuZ2V0RnJvbnQoKTw8IiAiOwogICAgcS5kZXFldWUoKTsKfQpyZXR1cm4gMDt9Cgo=