//////////////////////////////////////////////////////////////////////////
// 栈的数组实现
// 2011-5-2 by kida#163.com
//
// 栈的最大容量
const int MAX_STATCK_SIZE = 10;
template <typename T>
class Stack
{
public:
typedef T value_type;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef size_t size_type;
private:
value_type data[MAX_STATCK_SIZE]; // 数据区
size_type top; // 栈顶位置
public:
Stack() : top(-1) {}
~Stack() {}
public:
// 入栈
void Push(const_reference x) throw(char*)
{
if ( IsFull() )
{
throw "stack is full";
}
data[++top] = x;
}
// 出栈
const_reference Pop() throw(char*)
{
if ( IsEmpty() )
{
throw "stack is empty";
}
return data[top--];
}
// 清空栈
void SetEmpty() { top = -1; }
// 是否栈为空
bool IsEmpty() const { return (-1 == top) ? true : false; }
// 栈是否达到最大容量
bool IsFull() const { return (MAX_STATCK_SIZE - 1 == top) ? true : false; }
};
优点:简单,速度快
缺点:栈最大元素个数不能动态扩展,为了保证不溢出,往往设置较大的栈空间,存储空间利用率不高。