栈的数组实现
////////////////////////////////////////////////////////////////////////// // 栈的数组实现 // 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; } };
优点:简单,速度快
缺点:栈最大元素个数不能动态扩展,为了保证不溢出,往往设置较大的栈空间,存储空间利用率不高。