#include <iostream>



using namespace std;

typedef int elemType;

//#definde Maxsize 10

class seqStack{

public :

int maxSize;

int top;

elemType * array;

public :



/*init the stack*/



void initStack(int maxsize){

this->maxSize=maxsize;

this->array=new elemType[maxSize];

this->top=-1;

}



/*constructor*/

seqStack(int maxsize){



this->initStack(maxsize);



}



/*destrucotr*/

~seqStack(){

delete []array;

}





/*is full?*/

bool isStackFull(){

if(this->top==this->maxSize-1)

return true;

else

return false;

}



/*is empty?*/

bool isStackEmpty(){



if(this->top==-1)

return true;

else

return false;



}





/*push the element into the stack,

if the stack is full ,return fasle;

else return true;

*/

bool push(elemType element){

if(this->isStackFull())

return false;

this->top++;

this->array[this->top]=element;

return true;

}



/*

pop the top element from the stack;

if the stack is empty ,return false;

else return true.

*/



bool pop(elemType& topElement){

if(this->isStackEmpty())

return false;



topElement=this->array[this->top];

this->top--;

return true;

}



/*get the current size of the stack */



int getSize(){



return this->top+1;

}





/*get the top element

if the stack is empty ,return false ;

else true;

*/



bool getTop(elemType& topElement){

if(this->isStackEmpty())

return false;



topElement=this->array[this->top];

return true;

}





};



int main()

{

seqStack seqstack(10);

seqstack.push(2);

seqstack.push(3);

seqstack.push(4);



elemType element;

int size;

cout<<"push 2 , 3, 4"<<endl;

size=seqstack.getSize();

cout<<"size is : "<<size<<endl;



seqstack.pop(element);



cout<<"pop the top , top is : "<<element<<endl;



size=seqstack.getSize();

cout<<"size is : "<<size<<endl;



seqstack.getTop(element);

cout<<"get the top is :"<<element<<endl;

cout << "Hello world!" << endl;

return 0;

}