标签:
/****************************
* Date : 2015-07-20
* Description: stack.h
*****************************/
#ifndef _STACK_H
#define _STACK_H
template<class T>
class Stack{
public:
Stack(int MaxStackSize = 10);
~Stack() {delete [] stack;}
bool IsEmpty() const {return top == -1;}
bool IsFull() const {return top == MaxTop;}
T Top() const;
Stack<T>& Push(const T& val);
T Pop();
private:
int top;
int MaxTop;
T *stack;
};
//
template<class T>
Stack<T>::Stack(int MaxStackSize /* = 10 */)
{
top = -1;
MaxTop = MaxStackSize - 1;
stack = new T[MaxStackSize];
}
//
template<class T>
Stack<T>& Stack<T>::Push(const T& val)
{
if(IsFull())
{
cerr << "栈空间已满" << endl;
exit(EXIT_FAILURE);
}
stack[++top] = val;
return *this;
}
//
template<class T>
T Stack<T>::Top() const
{
if(IsEmpty())
{
cerr << "栈空间为空" << endl;
exit(EXIT_FAILURE);
}
return stack[top];
}
//
template<class T>
T Stack<T>::Pop()
{
if(IsEmpty())
{
cerr << "栈空间为空" << endl;
exit(EXIT_FAILURE);
}
return stack[top--];
}
#endif //_STACK_H
标签:
原文地址:http://www.cnblogs.com/hzwackerman/p/4660783.html