#include <iostream.h>
#include <stdlib.h>
typedef int DataType;
const int MaxQSize = 50;
class Queue
{
private:
int front;
int rear;
int count;
DataType qlist[MaxQSize];
public:
Queue(void);
void QInsert(const DataType& item);
DataType QDelete(void);
void ClearQueue(void);
DataType QFront(void) const;
int QLength(void) const;
bool QEmpty(void) const;
bool QFull(void) const;
};
Queue::Queue(void):front(0), rear(0), count(0)
{}
void Queue::QInsert(const DataType& item)
{
if (count == MaxQSize)
{
cerr << "Queue overflow!" << endl;
exit(1);
}
count++;
qlist[rear] = item;
rear = (rear + 1) % MaxQSize;
}
DataType Queue::QDelete(void)
{
DataType temp;
if (count == 0)
{
cerr << "Deleting from an empty queue!" << endl;
exit(1);
}
temp = qlist[front];
count--;
front = (front + 1) % MaxQSize;
return temp;
}
int Queue::QLength(void) const
{
return count;
}
void Queue::ClearQueue(void)
{
front = 0;
rear = 0;
count = 0;
}
bool Queue::QEmpty(void) const
{
if (count == 0)
{
return true;
}
return false;
}
bool Queue::QFull(void) const
{
if (count == MaxQSize)
{
return true;
}
return false;
}
DataType Queue::QFront(void) const
{
return qlist[front];
}