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

📄 queue.h

📁 模拟银行(也可以其他类似)一天的营运光顾情况。
💻 H
字号:
#include"constdef.h"
template<class TElem>
class QUeue
{
	protected:
		int front,rear,len;//front指向第一个元素的前一个位置,rear直接指向最后一个元素,len队列长度
		TElem* room;
	public:
		bool QueueIsEmpty();//检查队列是否为空.空则返回true,否则返回false
		bool QueueIsFull();//检查队列是否为满.满则返回true,否则返回false,用rear+1==front来判断.
		int InitQueue();//初始化队列
		int GetHead(TElem&e);//若队列不空,取得头结点的元素,用e返回,成功返回ok,否则返回error.
		int Pop(TElem&e);//若队列不空,去掉头结点的元素,用e返回,并返回ok,否则返回error.
		int AddQueue(TElem e);//若队列未满,将元素e插入到队列中,返回ok,否则返回error.
		int QueueLen();//计算队列的长度.
		void Display();
};


template<class TElem>
int QUeue<TElem>::InitQueue()
{
	front=0;
	rear=0;
	room=new TElem[MAXSIZE];
	return ok;
}

template<class TElem>
bool QUeue<TElem>::QueueIsEmpty()
{
	if(front==rear)return true;
	else return false;
}

template<class TElem>
bool QUeue<TElem>::QueueIsFull()
{
	if((rear+1)%MAXSIZE==front)return true;
	else return false;
}

template<class TElem>
int QUeue<TElem>::GetHead(TElem &e)
{
	if(QueueIsEmpty())
	{cout<<"队列为空,操作结束."<<endl;return error;}
	else
		e=room[front+1];
	return ok;
}

template<class TElem>
int QUeue<TElem>::Pop(TElem&e)//若队列不空,去掉头结点的元素,用e返回,并返回ok,否则返回error.
{
	if(QueueIsEmpty())
	{cout<<"队列为空,操作结束."<<endl;return error;}
	else
		e=room[(front+1)%MAXSIZE];
	    front=(front+1)%MAXSIZE;//这样做是因为如果front==99时
	return ok;
}

template<class TElem>
int QUeue<TElem>::AddQueue(TElem e)//若队列未满,将元素e插入到队列中,返回ok,否则返回error.
{
	if(QueueIsFull())
	{cout<<"队列为满,操作结束."<<endl;return error;}
	else
		room[rear+1]=e;
	    rear=(rear+1)%MAXSIZE;
		return ok;
}

template<class TElem>
int QUeue<TElem>::QueueLen()//计算队列的长度.
{
	len=(rear-front+MAXSIZE)%MAXSIZE;
	return len;
}

template<class TElem>
void QUeue<TElem>::Display()
{
	cout<<"front="<<front<<",rear="<<rear<<endl;
}

⌨️ 快捷键说明

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