⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.h

📁 用vc编写的专家系统的源代码,对初学者很有帮助
💻 H
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -