队列的顺序存储结构---循环队列

来源:互联网 发布:mac linux 双系统 编辑:程序博客网 时间:2024/04/29 13:16

 

#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;}