请问我写的C++基于循环数组的队列 代码错在哪里,老是答案错

正常出队列返回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];       // 队列容器

};

你这只是实现的代码,调用的代码呢?
只有看到调用的代码,才有可能知道你想实现什么功能
当然最好你是你说明一下调用代码想实现的目标,但实际执行后又是什么效果,这样才好分析。

你这只是实现的代码,调用的代码呢?
只有看到调用的代码,才有可能知道你想实现什么功能
当然最好你是你说明一下调用代码想实现的目标,但实际执行后又是什么效果,这样才好分析。

我只想说说自己的理解
1.循环数组队列,边界下标控制做的不错,但是为什么逻辑判断时候没有考虑进去?
a 初始0 0 那如果我加入了99个QueueEntry 之后呢?是不是又是0 0了?,这个时候你大部分函数都非正常工作了
b 设计逻辑问题,保存的类对象的拷贝,所以所谓的“清除队列所有元素”没有任何用,只是对那些任然存在的数据‘撒手不管’了而已
c 考虑下这个情况:我先入队列3个,再出队列2个,你猜现在是不是空的?如果我如队列99个,在出98个呢?这个时候是不是满的?
.................
此处略去....

队列这个东西 要自己实现的话 应该牺牲掉一个存储单位,用于方便判断是满还是空,队尾+1=队首 ->满 队尾 = 队首-> 空

哪里有问题,我试了一下输出没问题呀

貌似没有问题啊啊啊啊啊