#include<iostream>
using namespace std;
const int QueueSize=100;
template <class DataType>
class CirQueue{
private:
int front,rear;
DataType data[QueueSize];
public:
CirQueue();
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty(){if(front==rear)return 1;else return 0;}
};
template <class DataType>
CirQueue<DataType>::CirQueue()
{
rear=front=QueueSize-1;
}
template <class DataType>
void CirQueue<DataType>::EnQueue(DataType x)//入队
{
if((rear+1)%QueueSize==front) throw"上溢!\n";
rear=(rear+1)%QueueSize;//队尾指针在循环意义下加1
data[rear]=x;//在队尾插入元素
}
template <class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if(rear==front) throw"队空!\n";
front=(front+1)%QueueSize;//队头指针在循环意义下加1
return data[front];//读取并返回队前的队头元素
}
template <class DataType>
DataType CirQueue<DataType>::GetQueue(){
if(rear==front) throw"队空!\n";
return data[(front+1)%QueueSize];
}
int main(){
try{
CirQueue <int> c =CirQueue<int>();
try{
cout<<"将元素10和15入队;\n";
c.EnQueue(10);c.EnQueue(15);
}catch(char *p){
cout<<p;
}
try{
cout<<"队头元素为:"<<c.GetQueue()<<endl;
}catch(char *p){
cout<<p;
}
try{
cout<<"出队,出队的元素为:"<<c.DeQueue()<<endl;
}catch(char *p){
cout<<p;
}
try{
cout<<"队列是否为空:"<<c.Empty()<<endl;
}catch(char *p){
cout<<p;
}
}catch(char *p){
cout<<p;
}
return 0;
using namespace std;
const int QueueSize=100;
template <class DataType>
class CirQueue{
private:
int front,rear;
DataType data[QueueSize];
public:
CirQueue();
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty(){if(front==rear)return 1;else return 0;}
};
template <class DataType>
CirQueue<DataType>::CirQueue()
{
rear=front=QueueSize-1;
}
template <class DataType>
void CirQueue<DataType>::EnQueue(DataType x)//入队
{
if((rear+1)%QueueSize==front) throw"上溢!\n";
rear=(rear+1)%QueueSize;//队尾指针在循环意义下加1
data[rear]=x;//在队尾插入元素
}
template <class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if(rear==front) throw"队空!\n";
front=(front+1)%QueueSize;//队头指针在循环意义下加1
return data[front];//读取并返回队前的队头元素
}
template <class DataType>
DataType CirQueue<DataType>::GetQueue(){
if(rear==front) throw"队空!\n";
return data[(front+1)%QueueSize];
}
int main(){
try{
CirQueue <int> c =CirQueue<int>();
try{
cout<<"将元素10和15入队;\n";
c.EnQueue(10);c.EnQueue(15);
}catch(char *p){
cout<<p;
}
try{
cout<<"队头元素为:"<<c.GetQueue()<<endl;
}catch(char *p){
cout<<p;
}
try{
cout<<"出队,出队的元素为:"<<c.DeQueue()<<endl;
}catch(char *p){
cout<<p;
}
try{
cout<<"队列是否为空:"<<c.Empty()<<endl;
}catch(char *p){
cout<<p;
}
}catch(char *p){
cout<<p;
}
return 0;
}