📄 queue.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 + -