classFixedCapacityStack{int* a =nullptr;//stack entriesint N;//sizepublic:FixedCapacityStack(int cap){
a =newint(cap);}boolisEmpty(){return N ==0;}intsize(){return N;}voidpush(int val){
a[N++]= val;}intpop(){return a[--N];}};
下压栈(动态扩容数组)
//vector实现classResizingArrayStack{
vector<int>a;int N =0;voidresize(int max){
vector<int>temp(a);
a = vector<int>(max);for(int i =0; i < N;++i)
a[i]= temp[i];}public:ResizingArrayStack(){
a = vector<int>(1);}boolisEmpty(){return N ==0;}intsize(){return N;}voidpush(int val){if(N == a.size())resize(2* a.size());
a[N++]= val;}intpop(){int val = a[--N];if(N >0&& N == a.size()/4)resize(a.size()/2);return val;}};//指针实现#define sz sizeof(a)/sizeof(int)classResizingArrayStack{int* a =newint(1);int N =0;voidresize(int max){int* temp =newint(max);for(int i =0; i < N;++i)
temp[i]= a[i];
a = temp;}public:boolisEmpty(){return N ==0;}intsize(){return N;}voidpush(int val){if(N == sz)resize(2* sz);
a[N++]= val;}intpop(){int val = a[--N];if(N >0&& N == sz /4)resize(sz/2);return val;}};