头文件 MyQueue.h
#ifndef MYQUEUE_H
#define MYQUEUE_H
class MyQueue
{
public:
MyQueue(int queueCapacity);
virtual ~MyQueue();
void ClearQueue();
bool QueueEmpty() const;
int QueueLength() const;
bool EnQueue(int element);
bool DeQueue(int &element);
void QueueTraverse();
private:
int * Queue; //队列数组指针
int QueueLen; //队列元素个数
int QueueCapacity; //队列数组容量
int Head;
int Tail;
};
#endif
//头文件的实现MyQueue.cpp
#include"MyQueue.h"
#include<iostream>
using namespace std;
MyQueue::MyQueue(int queueCapacity)
{
QueueCapacity = queueCapacity;
Queue = new int[QueueCapacity];
ClearQueue();
}
MyQueue::~MyQueue()
{
delete []Queue;
Queue = NULL;
}
void MyQueue::ClearQueue()
{
Head = 0;
Tail = 0;
QueueLen = 0;
}
bool MyQueue::QueueEmpty() const
{
if(QueueLen == 0)
{
return true;
}
else
{
return false;
}
//QueueLen == 0 ? true : false;
}
bool MyQueue::QueueFull() const
{
if(QueueLen == QueueCapacity)
{
return true;
}
else
{
return false;
}
}
int MyQueue::QueueLength() const
{
return QueueLen;
}
bool MyQueue::EnQueue(int element)
{
if(QueueFull())
{
return false;
}
else
{
Queue[Tail] = element;
Tail++;
Tail = Tail % QueueCapacity;
QueueLen++;
return true;
}
}
bool MyQueue::DeQueue(int &element)
{
if(QueueEmpty())
{
return false;
}
else
{
element = Queue[Head];
Head++;
Head = Head % QueueCapacity;
QueueLen++;
return true;
}
}
void MyQueue::QueueTraverse()
{
for(int i = Head; i < QueueLen + Head; ++i)
{
cout << Queue[i % QueueCapacity] << endl;
}
}