严蔚敏 《数据结构》第三章栈和队列 3.4节循环队列——队列的顺序表示和实现 C++实现
#ifndef SQ_QUEUE_H_
#define SQ_QUEUE_H_
#include <bits/stdc++.h>
using namespace std;
using QElemType = int;
class SqQueueClass {
private:
const int kMAXQSIZE = 100;
private:
vector<QElemType> queue_;
int front_;
int rear_;
public:
SqQueueClass()
: queue_{vector<QElemType>(kMAXQSIZE)}, front_{0}, rear_{0} {}
int QueueLength()
{
return (rear_ - front_ + kMAXQSIZE) % kMAXQSIZE;
}
bool EnQueue(const QElemType& e)
{
if ((rear_ + 1) % kMAXQSIZE == front_)
return false;
queue_[rear_] = e;
rear_ = (rear_ + 1) % kMAXQSIZE;
return true;
}
bool DeQueue(QElemType& e)
{
if (front_ == rear_)
return false;
e = queue_[front_];
front_ = (front_ + 1) % kMAXQSIZE;
return true;
}
};
#endif