#ifndef MyQueue_H
#define MyQueue_H
/************************
* 环形队列C++实现
* *********************/
class MyQueue
{
public:
MyQueue(int queueCapacity); //创建队列
virtual ~MyQueue(); //销毁队列
void ClearQueue(); //清空队列
bool QueueEmpty() const; //判空队列
int QueueLength() const; //获取队列长度
bool EnQueue(int element); //新元素入队
bool DeQueue(); //首元素出队
void QueueTraverse(); //遍历队列
bool QueueFull() const;
private:
int *m_pQueue; //队列数组指针
int m_iQueueLen; //队列元素个数
int m_iQueueCapacoty; //队列数组容量
int m_iHead;
int m_iTail;
};
#endif
#include <iostream>
#include "MyQueue.h"
using namespace std;
MyQueue::MyQueue(int queueCapactiy)
{
m_iQueueCapacoty = queueCapactiy;
ClearQueue();
m_pQueue = new int[m_iQueueCapacoty];
};
MyQueue::~MyQueue()
{
delete[] m_pQueue;
m_pQueue = NULL;
}
void MyQueue::ClearQueue()
{
m_iHead = 0;
m_iTail = 0;
m_iQueueLen = 0;
}
bool MyQueue::QueueEmpty() const
{
return QueueLength() == 0;
}
int MyQueue::QueueLength() const
{
return m_iQueueLen;
}
bool MyQueue::QueueFull() const
{
return QueueLength() == m_iQueueCapacoty;
}
bool MyQueue::EnQueue(int element)
{
if (QueueFull())
{
return false;
}
else
{
m_pQueue[m_iTail] = element;
m_iTail++;
m_iTail = m_iTail % m_iQueueCapacoty;
m_iQueueLen++;
return true;
}
}
bool MyQueue::DeQueue()
{
if (QueueEmpty())
{
return false;
}
else
{
m_iHead++;
m_iHead = m_iHead % m_iQueueCapacoty;
m_iQueueLen--;
return true;
}
}
void MyQueue::QueueTraverse()
{
int l = QueueLength();
for (int i = 0; i < l; i++)
{
cout << m_pQueue[(m_iHead + i) % m_iQueueCapacoty] << endl;
}
}
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!