#include <iostream>
class Stack
{
int * m_head;
int m_size;
int m_index;
public :
Stack( int size) : m_size{ size } , m_index{ 0 } {
m_head = new int [ size] ;
}
~Stack( ) {
delete [ ] m_head;
}
bool push ( int x)
{
if ( m_index < m_size)
{
m_head[ m_index++ ] = x;
return true ;
}
std:: cout << "the stack is full" << std:: endl ;
return false ;
}
} ;
int main( )
{
int n = 5 ;
Stack stack{ n} ;
for ( int i = 0 ; i < n; i++ ) {
if ( ! stack.push ( i) ) return ;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgU3RhY2sKewogICAgaW50KiBtX2hlYWQ7CiAgICBpbnQgbV9zaXplOwogICAgaW50IG1faW5kZXg7CnB1YmxpYzoKICAgIFN0YWNrKGludCBzaXplKSA6IG1fc2l6ZXsgc2l6ZSB9LCBtX2luZGV4eyAwIH0gewogICAgICAgIG1faGVhZCA9IG5ldyBpbnRbc2l6ZV07CiAgICB9CiAgICB+U3RhY2soKSB7CiAgICAgICAgZGVsZXRlW10gbV9oZWFkOwogICAgfQogICAgYm9vbCBwdXNoIChpbnQgeCkKICAgIHsKICAgICAgICBpZiAobV9pbmRleCA8IG1fc2l6ZSkKICAgICAgICB7CiAgICAgICAgICAgIG1faGVhZFttX2luZGV4KytdID0geDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCAidGhlIHN0YWNrIGlzIGZ1bGwiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn07CmludCBtYWluKCkKewogICAgaW50IG4gPSA1OwogICAgU3RhY2sgc3RhY2t7bn07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmICghc3RhY2sucHVzaChpKSkgcmV0dXJuOwogICAgfQp9Cg==