#include <iostream>
using namespace std;
const int QueueSize = 100;
template <class DataType>
class CirQueue
{
private:
DataType data[QueueSize]; ///存放队列元素的数组
int front, rear; ///队头和队尾指针
public:
CirQueue() { front = rear = QueueSize - 1; } ///构造函数,初始化空队列
~CirQueue() {} ///析构函数为空
void EnQueue(DataType x); ///入队操作,将元素x入队
DataType DeQueue(); ///出队操作,将队头元素出队
DataType GetQueue(); ///取队头元素(并不删除)
int Empty() {
if (front == rear)
return 1;
else
return 0;
} ///判断队列是否为空
};
template <class DataType>
void CirQueue<DataType>::EnQueue(DataType x)
{
if ((rear + 1) % QueueSize == front)
throw "上溢";
rear = (rear + 1) % QueueSize; ///队尾指针在循环意义下加1
data[rear] = x; ///在队尾出插入元素
}
template <class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if (front == rear)
throw "下溢";
front = (front + 1) % QueueSize; ///队头指针在循环意义下加1
return data[front]; ///读取并返回出队前的队头元素
}
template <class DataType>
DataType CirQueue<DataType>::GetQueue()
{
if (rear == front)
throw "下溢";
int i = (front + 1) % QueueSize; ///注意不要给队头指针赋值
return data[i];
}
int main()
{
return 0;
}