#include <iostream>
using namespace std;
const int QueueSize=100;
template<class DataType>
class CirQueue
{
public:
CirQueue(){front=rear=QueueSize-1;};
~CirQueue(){};
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty();
private:
DataType data[QueueSize];
int front,rear;
};
template<class DataType>
void CirQueue<DataType>::EnQueue(DataType x)
{
if((rear+1)%QueueSize==front)throw"上溢";
rear=(rear+1)%QueueSize;
data[rear]=x;
}
template<class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if(rear==front)throw"下溢";
front=(front+1)%QueueSize;
return data[front];
}
template<class DataType>
DataType CirQueue<DataType>::GetQueue()
{
int i;
if (rear==front)throw"下溢";
i=(front+1)%QueueSize;
return data[i];
}
template<class DataType>
int CirQueue<DataType>::Empty()
{
if(front==rear)return 1;
else return 0;
}
void main()
{
CirQueue<int>Q;
if(Q.Empty())
cout<<"队列为空"<<endl;
else
cout<<"队列非空" <<endl;
cout<<"元素9和21执行入队操作"<<endl;
try
{
Q.EnQueue(9);
Q.EnQueue(21);
}
catch (char* wrong)
{
cout<<wrong<<endl;
}
cout<<"查看队头元素为:";
cout<<Q.GetQueue()<<endl;
cout<<"执行一次出队操作"<<endl;
try
{
Q.DeQueue();
}
catch (char* wrong)
{
cout<<wrong<<endl;
}
cout<<"查看队头元素:";
cout<<Q.GetQueue()<<endl; }
using namespace std;
const int QueueSize=100;
template<class DataType>
class CirQueue
{
public:
CirQueue(){front=rear=QueueSize-1;};
~CirQueue(){};
void EnQueue(DataType x);
DataType DeQueue();
DataType GetQueue();
int Empty();
private:
DataType data[QueueSize];
int front,rear;
};
template<class DataType>
void CirQueue<DataType>::EnQueue(DataType x)
{
if((rear+1)%QueueSize==front)throw"上溢";
rear=(rear+1)%QueueSize;
data[rear]=x;
}
template<class DataType>
DataType CirQueue<DataType>::DeQueue()
{
if(rear==front)throw"下溢";
front=(front+1)%QueueSize;
return data[front];
}
template<class DataType>
DataType CirQueue<DataType>::GetQueue()
{
int i;
if (rear==front)throw"下溢";
i=(front+1)%QueueSize;
return data[i];
}
template<class DataType>
int CirQueue<DataType>::Empty()
{
if(front==rear)return 1;
else return 0;
}
void main()
{
CirQueue<int>Q;
if(Q.Empty())
cout<<"队列为空"<<endl;
else
cout<<"队列非空" <<endl;
cout<<"元素9和21执行入队操作"<<endl;
try
{
Q.EnQueue(9);
Q.EnQueue(21);
}
catch (char* wrong)
{
cout<<wrong<<endl;
}
cout<<"查看队头元素为:";
cout<<Q.GetQueue()<<endl;
cout<<"执行一次出队操作"<<endl;
try
{
Q.DeQueue();
}
catch (char* wrong)
{
cout<<wrong<<endl;
}
cout<<"查看队头元素:";
cout<<Q.GetQueue()<<endl; }