C++数据结构之实现循环顺序队列分享!

数据结构–用C++实现循环顺序队列

约定:队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素

为了解决假溢出,我们将存储队列的数组头尾相接,从而产生了循环队列。

如何判断循环队列队空?

队空:front=rear

如何盘对循环队列堆满?

队满:front=rear

那么问题就来了,队空和队满的判断条件相同,为了避免队满时产生队空的判断或者相反,我们需要修改队满条件使得队空和堆满的判定条件分开。
方法:浪费一个元素空间,队满时数组只有一个空闲单元。队满条件:(rear+1)%QueueSize==front

下面是实现代码:

文件CirQueue.h

  #ifndef CirQueue_byNim  #define CirQueue_byNim    #include<iostream>  using namespace std;    const int QueueSize=100;  //循环队列的最大存储空间   template <class T>  class CirQueue  {    private:      T *data;  //存储数据的数组       int front,rear; //队头队尾指针     public:      CirQueue()      {        data=new T[QueueSize];        front=rear=0;      }      ~CirQueue()      {        delete []data;        front=rear=0;      }      void EnQueue(T e)      {        if((rear+1)%QueueSize==front)  //队满条件           throw "上溢";        rear=(rear+1)%QueueSize;        data[rear]=e;      }      T DeQueue()      {        if(rear==front)//队空条件           throw "下溢";        front=(front+1)%QueueSize;        return data[front];      }      T GetQueue()      {        if(rear==front)//队空条件           throw "下溢";        return data[(front+1)%QueueSize];      }      bool empty()      {        if(front==rear) //队空条件:front==rear           return true;        return false;      }  };    #endif    

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

—-想了解C++数据结构之实现循环顺序队列分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/481982.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐