njll8949
sysu_转基因
2015-09-29 23:29

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

1
  • 循环数组
  • 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];       // 队列容器

};
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

6条回答