正常出队列返回success,空队列返回underflow, 满队列返回overflow
enum ErrorCode
{
success,
underflow,
overflow
};
const int maxQueue = 100;
template <class QueueEntry>
class MyQueue
{
public:
MyQueue(){
front = rear = 0;
}
// 判断队列是否为空
bool empty() const{
return rear == front;
}
// 入队操作
ErrorCode append(const QueueEntry &item){
if(!full()){
entry[rear] = item;
rear = (rear+1)%100;
return success;
}
else
return overflow;
}
// 出队操作
ErrorCode serve(){
if(!empty()) {
front = (front+1)%100;
return success;
}
else return underflow;
}
// 获取队头元素
ErrorCode retrieve(QueueEntry &item) const{
return success;
}
// 判断队列是否已满
bool full() const{
return ((rear + 1) % 100 == front);
}
// 获取队列已有元素个数
int size() const{
return (rear - front + 100)%100;
}
// 清除队列所有元素
void clear(){
rear = front = 0;
}
// 获取队头元素并出队
ErrorCode retrieve_and_serve(QueueEntry &item){
if(!empty()) {
item = entry[front];
front = (front+1)%100;
return success;
}
else return underflow;
}
private:
int front; // 队头下标
int rear; // 队尾下标
QueueEntry entry[100]; // 队列容器
};