用数组来存储栈中的元素
const int stackIncreament=20;
template<class T>
class Stack{
public:
Stack(int sz=50);
~Stack(){delete []elements;}
void Push(const T&x);
bool Pop(T&x);
bool getTop(T&x);
bool IsEmpty()const{return (top==-1)?true:false;}
bool IsFull()const{return (top==maxSize-1)?true:false;}
int getSize()const{return top+1;}
void makeEmpty(){top=-1;}
friend ostream& operator<<(ostream& os, Stack<T>& s);
private:
T *elements;
int top;
int maxSize;
void overflowProcess();//当数组不够存放数据时,对数组容量进行扩充
};
template<class T>
Stack<T>::Stack(int sz):top(-1),maxSize(sz){
elements=new T[maxSize];
assert(elements!=NULL);
}
template<class T>
void Stack<T>::overflowProcess(){
//私有函数,扩充栈的存储空间
T *newArray = new T[maxSize+stackI