数据结构_循环队列

来源:互联网 发布:sql insert 编辑:程序博客网 时间:2024/04/28 13:44
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;#define MAXN 5template<class T>class CirQueue{private://队列数据空间T data[MAXN];//队头和队尾指针int front,rear;public://构造和析构函数CirQueue(){front=0;rear=0;}~CirQueue(){;}//操作函数//判断队列是否为空int isEmpty();//入队void enQueue(T n);//出队T getQueue();};//入队操作template<class T>void CirQueue<T>::enQueue(T n){if((rear+1)%MAXN==front) throw "队满错误!";//队尾位置空,队头非空data[rear] = n;rear = (rear+1)%MAXN;}//检查队空template<class T>int CirQueue<T>::isEmpty(){//队空检查return (rear-front +MAXN)%MAXN;}//出队操作template<class T>T CirQueue<T>::getQueue(){if(front==rear) throw "队列数据空间空!";///这里用isEmpty会出错T n = data[front];front = (front+1)%MAXN;return n;}int main(){CirQueue<int> cirQueue; cirQueue.enQueue(1); cirQueue.enQueue(2); for(int i = 0;i < 2;i ++){ cout<<cirQueue.getQueue()<<endl; } if(cirQueue.isEmpty()) cout<<"ok!"<<endl; else cout<<"oh,no!"<<endl;return 0;}