#include <iostream>
using namespace std;
class arrStack{
private:
int mSize;
int top;
int * st;
public:
arrStack(int size){
mSize=size;
top = -1;
st=new int [mSize];
}
~arrStack(){delete[]st;}
void clear(){ top = -1; }
void print_arrStack();
bool push(int item);
bool pop(int & item);
};
bool arrStack::pop(int & item){
if(top==-1){
cout<<"此栈为空栈,不能出栈!!!\n";
return false;
}
item=st[top--];
return true;
}
bool arrStack::push(int item){
if(top==mSize){
int * newSt=new int [mSize*2];
for(int i=0;i<=top;i++){
newSt[i]=st[i];
}
delete[]st;
st=newSt;
mSize=mSize*2;
}
st[++top]=item;
return true;
}
void arrStack::print_arrStack(){
int x=top;
cout<<"这个栈为:\n";
for (int i=0;i<=x;i++){
cout<<st[i]<<endl;
}
}
int main(){
arrStack s(2);
s.push(2);
s.push(8);
s.push(9);
s.print_arrStack();
int temp;
s.pop(temp);
cout<<"出栈的元素为:"<<temp<<endl;
s.print_arrStack();
return 0;
}