网站建设资讯

NEWS

网站建设资讯

C++怎么实现循环顺序队列-创新互联

这篇文章主要介绍“C++怎么实现循环顺序队列”,在日常操作中,相信很多人在C++怎么实现循环顺序队列问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现循环顺序队列”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司专注于网站建设,为客户提供成都做网站、成都网站建设、成都外贸网站建设、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。

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

  • 队列的操作特性:先进先出

  • 队列中元素具有相同类型

  • 相邻元素具有前驱和后继关系

  • 设置队头、队尾两个指针,以改进出队的时间性能


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


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

如何判断循环队列队空?


队空:front=rear


如何盘对循环队列堆满?


队满:front=rear


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

下面是实现代码:


文件CirQueue.h

#ifndef CirQueue_byNim
#define CirQueue_byNim

#include
using namespace std;

const int QueueSize=100;  //循环队列的较大存储空间 
template 
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++怎么实现循环顺序队列-创新互联
网页URL:http://njwzjz.com/article/iogjj.html