#include <iostream>
using namespace std;
class Queue
{
int *a,rear,fro,cap;
public:
Queue()
{
rear=fro=-1;
}
void create(int siz)
{
cap=siz;
a=new int[siz];
// return *this;
}
bool isempty()
{
if(fro==-1)
return 1;
return 0;
}
bool isfull()
{
if(rear%(cap)==fro-1 || (fro==0 && rear==cap-1))
return 1;
return 0;
}
void enqueue(int x)
{
if(isempty())
{
a[++rear]=x;
fro++;
// return *this;
}
else if(isfull())
{
cout<<"\n Queue is Full\n";
// return *this;
}
else
a[++rear%(cap)]=x;
//return *this;
}
void dequeue()
{
if(isempty())
{
cout<<"\nQueue is empty\n";
// return *this;
}
else{
cout<<"\n dealeted element is "<<a[fro++]<<endl;
}
//return *this;
}
void display()
{
for(int i=fro;i<=rear%(cap);i++)
cout<<a[i]<<endl;
}
};
int main()
{
Queue q;
q.create(5);
q.enqueue(5);
q.enqueue(2);
q.dequeue();
q.enqueue(7);
q.enqueue(1);
q.enqueue(10);
q.display();
q.dequeue();q.display();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBRdWV1ZQp7CiAgICBpbnQgKmEscmVhcixmcm8sY2FwOwpwdWJsaWM6CiAgICBRdWV1ZSgpCiAgICB7CiAgICAgICAgcmVhcj1mcm89LTE7CiAgICB9CgogICAgICAgIHZvaWQgY3JlYXRlKGludCBzaXopCiAgICAgICAgewogICAgICAgICAgICBjYXA9c2l6OwogICAgICAgICAgICBhPW5ldyBpbnRbc2l6XTsKICAgICAgICAgIC8vICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQogICAgICAgIGJvb2wgaXNlbXB0eSgpCiAgICAgICAgewogICAgICAgICAgICBpZihmcm89PS0xKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBib29sIGlzZnVsbCgpCiAgICAgICAgewogICAgICAgICAgICBpZihyZWFyJShjYXApPT1mcm8tMSB8fCAoZnJvPT0wICYmIHJlYXI9PWNhcC0xKSkKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgdm9pZCBlbnF1ZXVlKGludCB4KQogICAgICAgIHsKICAgICAgICAgICAgaWYoaXNlbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhWysrcmVhcl09eDsKICAgICAgICAgICAgICAgIGZybysrOwogICAgICAgICAgICAgLy8gICByZXR1cm4gKnRoaXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihpc2Z1bGwoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dDw8IlxuIFF1ZXVlIGlzIEZ1bGxcbiI7CiAgICAgICAgICAgICAgIC8vIHJldHVybiAqdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBhWysrcmVhciUoY2FwKV09eDsKICAgICAgICAgICAgLy9yZXR1cm4gKnRoaXM7CiAgICAgICAgfQogICAgICAgIHZvaWQgZGVxdWV1ZSgpCiAgICAgICAgewogICAgICAgICAgICBpZihpc2VtcHR5KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PCJcblF1ZXVlIGlzIGVtcHR5XG4iOwogICAgICAgICAgIC8vICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgY291dDw8IlxuIGRlYWxldGVkIGVsZW1lbnQgaXMgIjw8YVtmcm8rK108PGVuZGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9yZXR1cm4gKnRoaXM7CiAgICAgICAgfQogICAgICAgIHZvaWQgZGlzcGxheSgpCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGk9ZnJvO2k8PXJlYXIlKGNhcCk7aSsrKQogICAgICAgICAgICAgICAgY291dDw8YVtpXTw8ZW5kbDsKICAgICAgICB9Cgp9OwppbnQgbWFpbigpCnsKICAgIFF1ZXVlIHE7CiAgICBxLmNyZWF0ZSg1KTsKICAgcS5lbnF1ZXVlKDUpOwogICBxLmVucXVldWUoMik7CiAgICAgcS5kZXF1ZXVlKCk7CiAgIHEuZW5xdWV1ZSg3KTsKICAgcS5lbnF1ZXVlKDEpOwogICBxLmVucXVldWUoMTApOwogICBxLmRpc3BsYXkoKTsKICAgcS5kZXF1ZXVlKCk7cS5kaXNwbGF5KCk7CiAgICByZXR1cm4gMDsKfQo=