国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++數據結構之實現循環順序隊列

2020-05-23 13:56:03
字體:
來源:轉載
供稿:網友

數據結構–用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

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐柏县| 满城县| 孙吴县| 石渠县| 五寨县| 垫江县| 香格里拉县| 黄浦区| 平安县| 武城县| 黎城县| 龙里县| 古田县| 壤塘县| 章丘市| 江门市| 望都县| 曲周县| 靖江市| 土默特左旗| 融水| 三台县| 临汾市| 昭通市| 唐河县| 玉门市| 金乡县| 呼玛县| 邵阳县| 教育| 蓝山县| 永平县| 青岛市| 瑞安市| 临城县| 曲麻莱县| 乌苏市| 祁阳县| 兰州市| 广昌县| 射洪县|