📄 9_10.h
字号:
//9_10.h
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include <iostream.h>
#include <stdlib.h>
const int MaxQSize = 50; //队列元素最大个数
//类的定义
template <class T>
class Queue
{
private:
int front, rear, count; //队头指针、队尾指针、元素个数
T qlist[MaxQSize]; //队列元素数组
public:
Queue (void); //构造函数,初始化队头指针、队尾指针、元素个数
// 修改队列的操作
void QInsert(const T& item); //新元素入队
T QDelete(void); //元素出队
void ClearQueue(void); //清空队列
T QFront(void) const; //访问队首元素
// 测试队列状态
int QLength(void) const; //求队列长度(元素个数)
int QEmpty(void) const; //判队队列空否
int QFull(void) const; //判断队列满否
};
// 构造函数,初始化队头指针、队尾指针、元素个数
template <class T>
Queue<T>::Queue (void) : front(0), rear(0), count(0)
{}
//向队尾插入元素(入队)
template <class T>
void Queue<T>::QInsert (const T& item)
{
// 如果队满,中止程序
if (count == MaxQSize)
{
cerr << "Queue overflow!" << endl;
exit(1);
}
// increment count, assign item to qlist and update rear
count++; //元素个数增1
qlist[rear] = item; //向队尾插入元素
rear = (rear+1) % MaxQSize; //队尾指针增1,用取余运算实现循环队列
}
// 删除队首元素,并返回该元素的值(出队)
template <class T>
T Queue<T>::QDelete(void)
{
T temp;
// 如果队空,中止程序
if (count == 0)
{
cerr << "Deleting from an empty queue!" << endl;
exit(1);
}
// 记录队首元素值
temp = qlist[front];
count--; // 元素个数自减
front = (front+1) % MaxQSize; //队首指针增1。取余以实现循环队列
return temp; //返回首元素值
}
// 访问队列首元素(返回其值)
template <class T>
T Queue<T>::QFront(void) const
{
return qlist[front];
}
// 返回队列元素个数
template <class T>
int Queue<T>::QLength(void) const
{
return count;
}
// 测试队空否
template <class T>
int Queue<T>::QEmpty(void) const
{
//返回逻辑值 count == 0
return count == 0;
}
// 测试队满否
template <class T>
int Queue<T>::QFull(void) const
{
// 返回逻辑值 count == MaxQSize
return count == MaxQSize;
}
// 清空队列
template <class T>
void Queue<T>::ClearQueue(void)
{
count = 0;
front = 0;
rear = 0;
}
#endif // QUEUE_CLASS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -