循环队列
#include <iostream>
using namespace std;
const int QueueSize=10;
template <class T>
class CirQueue
{
private :
T data[QueueSize];
int front,rear;
public:
CirQueue();
~CirQueue(){}
T GetQueue();
bool Empty();
bool Full();
int Length();
void Insert(T x);
T Delete();
void Print();
};
template <class T>
CirQueue<T>::CirQueue()
{
front=rear=0;
}
template <class T>
T CirQueue<T>::GetQueue()
{
if(front==rear)
throw"队列为空!";
int i=(front+1)%QueueSize;
return this->data[i];
}
template <class T>
bool CirQueue<T>::Empty ()
{
if(rear==front)
return true;
else
return false;
}
template <class T>
bool CirQueue<T>::Full ()
{
if((rear+1)%QueueSize==front)
return true;
else
return false;
}
template <class T>
int CirQueue<T>::Length ()
{
return (this->rear-this->front+QueueSize)%QueueSize;
}
template <class T>
void CirQueue<T>::Insert(T x)
{
if((rear+1)%QueueSize==front)
throw "队列上溢!";
rear=(rear+1)%QueueSize;
data[rear]=x;
}
template <class T>
T CirQueue<T>::Delete ()
{
if(rear==front)
throw"队列下溢!";
front=(front+1)%QueueSize;
return data[front];
}
template <class T>
void CirQueue<T>::Print ()
{
if(rear==front)
cout<<"队列为空"<<endl;
else
{
cout<<"***********************************"<<endl;
int length=(rear-front+QueueSiz
循环队列实验报告 来自淘豆网m.daumloan.com转载请标明出处.