stack.h

来自「用vc编写的专家系统的源代码,对初学者很有帮助」· C头文件 代码 · 共 46 行

H
46
字号
#include <assert.h>

template <class Type> class Stack
{
	public:
		Stack (int=50);
		~Stack() {delete [] elements;}
		void Push( const Type &item);
		Type Pop();
		Type GetTop();
		void MakeEmpty() {top=-1;}
		int IsEmpty() const {return top==-1;}
		int IsFull() const {return top==maxSize-1;}
	private:
		int top;//在顺序存储分配下是栈顶指针
		Type *elements;//在顺序存储分配下是存放栈中元素的栈数组
		int maxSize;//栈最大可容纳元素个数
};

template <class Type> Stack <Type>::Stack(int s):top(-1),maxSize(s)
//建立一个最大尺寸为s的空栈,若分配不成功则错误处理
{
	elements=new Type[maxSize];//创建栈空间
	assert(elements!=0);//断言:动态存储分配成功与否
}

template <class Type> void Stack <Type>::Push (const Type &item)
//若栈 不满,则将元素item插入到该栈的栈顶,否则出错处理
{
	assert(!IsFull());//断言:栈不满则继续执行
	elements[++top]=item;//栈顶指针现加1,然后按此地址进栈
}

template <class Type> Type Stack <Type>::Pop()
//若栈不为空则函数返回该栈顶元素的地址,然后栈顶指针退1
{
	assert(!IsEmpty());//断言:判栈空否,若断言成立则继续执行
	return elements[top--];//返回栈顶元素的值,同时栈顶指针退1
}

template <class Type> Type Stack <Type>::GetTop()
//若栈不为空则函数返回该栈栈顶元素的地址
{
	assert(!IsEmpty());//断言:判栈为空,若断言成立则继续执行
	return elements[top];//返回栈顶元素的值
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?