#include <iostream>
using namespace std;
template<class T>
class AStack{
private:
int size;
T* stackArray;
int top;
public:
AStack(int MaxStackSize){
size = MaxStackSize;
stackArray = new T[MaxStackSize];
top = -1;
}
~AStack(){
delete []stackArray;
}
bool Push(T& item);
bool Pop(T& item);
bool Peek(T& item);
bool IsEmpty(){
return top == -1;
}
bool IsFull(){
return top == size-1;
}
void clear(){
top = -1;
}
};
template<class T>
bool AStack<T> :: Push(T& item){
if(IsFull()){
cout<<"错误!栈满,无法压入!"<<endl;
return false;
}
top = top+1;
stackArray[top] = item;
return true;
}
template<class T>
bool AStack<T> :: Pop(T& item){
if(IsEmpty()){
cout<<"错误!栈空,无法弹出!"<<endl;
return false;
}
item = stackArray[top];
top = top-1;
return true;
}
template<class T>
bool AStack<T> :: Peek(T& item){
if(IsEmpty()){
cout<<"错误!栈空!"<<endl;
return false;
}
item = stackArray[top];
return true;
}
int main(){
int i = 0;
AStack<int>* p = new AStack<int>(100);
for(i = 0; i<10;++i)
{
p->Push(i);
}
int xx;
for(i = 0;i<10;++i){
p->Peek(xx);
cout<<xx<<" ";
}
cout<<endl;
for(i = 0;i<11;++i ){
p->Pop(xx);
cout<<xx<<" ";
}
return 0;
}