栈的数组实现

//////////////////////////////////////////////////////////////////////////
// 栈的数组实现
// 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; }
};
 
优点:简单,速度快
缺点:栈最大元素个数不能动态扩展,为了保证不溢出,往往设置较大的栈空间,存储空间利用率不高。
posted on 2011-05-02 17:33  潇湘雨歇  阅读(170)  评论(0编辑  收藏  举报