CirQueue.h:
#pragma once
const int QUEUESIZE = 100;
template <class DataType>
class CirQueue
{
private:
DataType* data;
int front;
int rear;
int mSize;
public:
CirQueue();
CirQueue(int size);
~CirQueue();
bool enQueue(DataType item);
bool deQueue(DataType& item);
bool getFront(DataType& item);
bool isEmpty();
bool isFull();
void clearQueue();
void displayQueue();
int queueLength();
};
CirQueue.cpp:
#include "CirQueue.h"
#include <iostream>
using namespace std;
template<class DataType>
inline CirQueue<DataType>::CirQueue()
{
front = 0;
rear = 0;
mSize = QUEUESIZE;
data = new DataType[mSize];
}
template<class DataType>
inline CirQueue<DataType>::CirQueue(int size)
{
front = 0;
rear = 0;
mSize = size;
data = new DataType[mSize];
}
template<class DataType>
inline CirQueue<DataType>::~CirQueue()
{
delete data;
}
template<class DataType>
inline bool CirQueue<DataType>::enQueue(DataType item)
{
if (isFull()) {
return false;
}
rear = (rear + 1) % mSize;
data[rear] = item;
return true;
}
template<class DataType>
inline bool CirQueue<DataType>::deQueue(DataType& item)
{
if (isEmpty()) {
return false;
}
front = (front + 1) % mSize;
item = data[front];
return true;
}
template<class DataType>
inline bool CirQueue<DataType>::getFront(DataType& item)
{
if (isEmpty()) {
return false;
}
int i = (front + 1) % mSize;
item = data[i];
return true;
}
template<class DataType>
inline bool CirQueue<DataType>::isEmpty()
{
if (front == rear) {
return true;
}
else
{
return false;
}
}
template<class DataType>
inline bool CirQueue<DataType>::isFull()
{
if ((rear + 1) % mSize == front) {
return true;
}
else
{
return false;
}
}
template<class DataType>
inline void CirQueue<DataType>::clearQueue()
{
rear = front;
}
template<class DataType>
inline void CirQueue<DataType>::displayQueue()
{
int i = front;
while (i!=rear)
{
i = (i + 1) % mSize;
cout << data[i] << endl;
}
}
template<class DataType>
inline int CirQueue<DataType>::queueLength()
{
return 0;
}
int main() {
CirQueue<char> c1(5);
c1.enQueue('a');
c1.enQueue('b');
/* char item;
c1.deQueue(item);
cout << item << endl;
c1.deQueue(item);
cout << item << endl;*/
c1.displayQueue();
system("pause");
return 0;
}