文件1:CirQueue.h
源程序:
# ifndef CirQueue_H
# define CirQueue_H
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;
};
# endif
文件2:CirQueue.cpp
源程序:
# include"CirQueue.h"
template <class DataType>
CirQueue<DataType>::~CirQueue()
{
cout<<"Destroy CirQueue!\n";
}
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()
{
DataType 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;
}
文件3:CirQueue_main.cpp
源程序:
# include<iostream>
using namespace std;
# include"CirQueue.cpp"
int main()
{
CirQueue<int> C;
if(C.Empty())
cout<<"The CirQueue is empty!"<<endl;
else
cout<<"The CirQueue is not empty!"<<endl;
int i;
for(i=1;i<10;i++)
C.EnQueue(i);
cout<<"队头元素为:"<<endl;
cout<<C.GetQueue()<<endl;
cout<<"执行一次出队操作."<<endl;
C.DeQueue();
cout<<"队头元素为:"<<endl;
cout<<C.GetQueue()<<endl;
return 0;
}
程序结果: