C++顺序队列(循环队列)的模板实现
#pragma once
//循环队列的实现
#include <iostream>
using namespace std;
const int QueneSize = 100;
template<typename DataType>
class CirQueue
{
public:
CirQueue(){ front = rear = QueneSize - 1; }
~CirQueue(){};
void EnQuene(DataType x);
DataType DeQuene();
DataType GetQuene();
int Empty(){ front == rear ? return 1 : return 0; }
private:
DataType data[QueneSize];
int front, rear;
};
template<typename DataType>
void CirQueue<DataType>::EnQuene(DataType x)
{
if ((rear + 1) % QueneSize == front)
{
throw"上溢";
}
rear = (rear + 1) % QueneSize;
data[rear] = x;
}
template<typename DataType>
DataType CirQueue<DataType>::DeQuene()
{
if(rear == front)
{
throw"下溢";
}
front = (front + 1) % QueneSize;
return data[front];
}
template<typename DataType>
DataType CirQueue<DataType>::GetQuene()
{
if (rear == front)
{
throw"下溢";
}
int i = (front + 1) % QueneSize;
return data[i];
}