#include <iostream>
using namespace std;
class Queue
{
private:
int sz ;
int capacity ;
int* arr ;
int last ;
int top ;
public:
Queue()
{
sz = 0 ;
capacity = 3 ;
arr = new int [capacity] ;
last = 0 ;
top = 0 ;
}
void push(int x)
{
if(last == capacity)
{
int oldcap = capacity ;
capacity *= 2 ;
int *temp = new int [capacity] ;
for(int i = 0 ; i < oldcap ; ++i)
{
temp[i] = arr[i] ;
}
delete [] arr ;
arr = temp ;
}
arr[last] = x ;
last++ ;
sz++ ;
}
void pop()
{
if(Empty())
{
cout << "underflow" << endl;
return;
}
top++ ;
sz-- ;
}
int Top()
{
return arr[top] ;
}
bool Empty()
{
if(top == sz) return true ;
return false ;
}
int getSz()
{
return sz ;
}
void print()
{
for(int i = top ; i < last ; ++i)
{
cout << arr[i] << ' ' ;
}
cout << endl;
}
};
int main()
{
Queue q ;
q.push(2);
q.push(6);
q.push(1);
q.push(0);
q.push(90);
q.print() ;
q.pop() ;
q.print() ;
q.pop();
q.pop();
q.pop();
q.pop();
q.pop();
if(q.Empty())
{
cout << "Queue is Empty" << endl;
}
q.push(123);
q.push(124);
q.push(125);
q.push(126);
q.push(127);
q.push(128);
cout << q.getSz() << endl;
cout << q.Top() << endl;
q.pop() ;
cout << q.Top() << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFF1ZXVlCnsKcHJpdmF0ZToKICAgIGludCBzeiA7CiAgICBpbnQgY2FwYWNpdHkgOwogICAgaW50KiBhcnIgOwogICAgaW50IGxhc3QgIDsKICAgIGludCB0b3AgOwpwdWJsaWM6CgogICAgUXVldWUoKQogICAgewogICAgICAgc3ogPSAwIDsKICAgICAgIGNhcGFjaXR5ID0gMyA7CiAgICAgICBhcnIgPSBuZXcgaW50IFtjYXBhY2l0eV0gOwogICAgICAgbGFzdCA9IDAgOwogICAgICAgdG9wID0gMCA7CiAgICB9CgogICAgdm9pZCBwdXNoKGludCB4KQogICAgewogICAgICAgIGlmKGxhc3QgPT0gY2FwYWNpdHkpCiAgICAgICAgewogICAgICAgICAgICBpbnQgb2xkY2FwID0gY2FwYWNpdHkgOwogICAgICAgICAgICBjYXBhY2l0eSAqPSAyIDsKICAgICAgICAgICAgaW50ICp0ZW1wID0gbmV3IGludCBbY2FwYWNpdHldIDsKICAgICAgICAgICAgZm9yKGludCBpID0gMCA7IGkgPCBvbGRjYXAgOyArK2kpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRlbXBbaV0gPSBhcnJbaV0gOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlbGV0ZSBbXSBhcnIgOwogICAgICAgICAgICBhcnIgPSB0ZW1wIDsKICAgICAgICB9CiAgICAgICAgYXJyW2xhc3RdID0geCA7CiAgICAgICAgbGFzdCsrIDsKICAgICAgICBzeisrIDsKCiAgICB9CgogICAgdm9pZCBwb3AoKQogICAgewogICAgICAgIGlmKEVtcHR5KCkpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJ1bmRlcmZsb3ciIDw8IGVuZGw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdG9wKysgOwogICAgICAgIHN6LS0gOwogICAgfQoKICAgIGludCBUb3AoKQogICAgewogICAgICAgIHJldHVybiBhcnJbdG9wXSA7CiAgICB9CgogICAgYm9vbCBFbXB0eSgpCiAgICB7CiAgICAgICAgaWYodG9wID09IHN6KSByZXR1cm4gdHJ1ZSA7CgogICAgICAgIHJldHVybiBmYWxzZSA7CiAgICB9CgogICAgaW50IGdldFN6KCkKICAgIHsKICAgICAgICByZXR1cm4gc3ogOwogICAgfQoKICAgIHZvaWQgcHJpbnQoKQogICAgewogICAgICAgIGZvcihpbnQgaSA9IHRvcCA7IGkgPCBsYXN0IDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCBhcnJbaV0gPDwgJyAnIDsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBRdWV1ZSBxIDsKICAgIHEucHVzaCgyKTsKICAgIHEucHVzaCg2KTsKICAgIHEucHVzaCgxKTsKICAgIHEucHVzaCgwKTsKICAgIHEucHVzaCg5MCk7CiAgICBxLnByaW50KCkgOwogICAgcS5wb3AoKSA7CiAgICBxLnByaW50KCkgOwoKICAgIHEucG9wKCk7CiAgICBxLnBvcCgpOwogICAgcS5wb3AoKTsKICAgIHEucG9wKCk7CiAgICBxLnBvcCgpOwogICAgaWYocS5FbXB0eSgpKQogICAgewogICAgICAgIGNvdXQgPDwgIlF1ZXVlIGlzIEVtcHR5IiA8PCBlbmRsOwogICAgfQoKICAgIHEucHVzaCgxMjMpOwogICAgcS5wdXNoKDEyNCk7CiAgICBxLnB1c2goMTI1KTsKICAgIHEucHVzaCgxMjYpOwogICAgcS5wdXNoKDEyNyk7CiAgICBxLnB1c2goMTI4KTsKICAgIGNvdXQgPDwgcS5nZXRTeigpIDw8IGVuZGw7CgogICAgY291dCA8PCBxLlRvcCgpIDw8IGVuZGw7CiAgICBxLnBvcCgpIDsKICAgIGNvdXQgPDwgcS5Ub3AoKSA8PCBlbmRsOwoKfQo=