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