template
class ArrayStack
{
  int size;
  int top;
  T * contain;

public:
  ArrayStack():size(0),top(-1),contain(NULL){}
  ArrayStack(int MaxSize);
  void push(T& element);
  T& GetTop();
  T& Pop();
  bool IsEmpty();
  void MakeEmpty();
};

#include "ArrayStack.h"

template
ArrayStack::ArrayStack(int MaxSize)
{
  size=MaxSize;
  top=-1;
  contain=new T[size];
}

template
void ArrayStack::push(T &element)
{
  if(top==size-1)
  {
    cout<<"栈已满,无法继续入栈!"<    return;
  }
  else
  {
    contain[++top]=element;
  }
}

template
T& ArrayStack::GetTop()
{
  if(top==-1)
  {
    cout<<"栈为空!"<    return;
  }
  else
  {
    return contain[top];
  }
}

template
T& ArrayStack::Pop()
{
  if(top==-1)
  {
    cout<<"栈为空!"<    return;
  }
  else
  {
    return contain[top--];
  }
}

template
bool ArrayStack::IsEmpty()
{
  return top==-1;
}

template
void ArrayStack::MakeEmpty()
{
  top=-1;
}