欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)循環(huán)順序隊(duì)列

 更新時(shí)間:2017年01月12日 08:36:46   投稿:lqh  
這篇文章主要介紹了 C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)循環(huán)順序隊(duì)列的相關(guān)資料,需要的朋友可以參考下

數(shù)據(jù)結(jié)構(gòu)–用C++實(shí)現(xiàn)循環(huán)順序隊(duì)列

  • 隊(duì)列的操作特性:先進(jìn)先出
  • 隊(duì)列中元素具有相同類型
  • 相鄰元素具有前驅(qū)和后繼關(guān)系
  • 設(shè)置隊(duì)頭、隊(duì)尾兩個(gè)指針,以改進(jìn)出隊(duì)的時(shí)間性能

約定:隊(duì)頭指針front指向隊(duì)頭元素的前一個(gè)位置,隊(duì)尾指針rear指向隊(duì)尾元素

為了解決假溢出,我們將存儲(chǔ)隊(duì)列的數(shù)組頭尾相接,從而產(chǎn)生了循環(huán)隊(duì)列。

如何判斷循環(huán)隊(duì)列隊(duì)空?

隊(duì)空:front=rear

如何盤對(duì)循環(huán)隊(duì)列堆滿?

隊(duì)滿:front=rear

那么問題就來了,隊(duì)空和隊(duì)滿的判斷條件相同,為了避免隊(duì)滿時(shí)產(chǎn)生隊(duì)空的判斷或者相反,我們需要修改隊(duì)滿條件使得隊(duì)空和堆滿的判定條件分開。
方法:浪費(fèi)一個(gè)元素空間,隊(duì)滿時(shí)數(shù)組只有一個(gè)空閑單元。隊(duì)滿條件:(rear+1)%QueueSize==front

下面是實(shí)現(xiàn)代碼:

文件CirQueue.h

#ifndef CirQueue_byNim
#define CirQueue_byNim

#include<iostream>
using namespace std;

const int QueueSize=100;  //循環(huán)隊(duì)列的最大存儲(chǔ)空間 
template <class T>
class CirQueue
{
  private:
    T *data;  //存儲(chǔ)數(shù)據(jù)的數(shù)組 
    int front,rear; //隊(duì)頭隊(duì)尾指針 
  public:
    CirQueue()
    {
      data=new T[QueueSize];
      front=rear=0;
    }
    ~CirQueue()
    {
      delete []data;
      front=rear=0;
    }
    void EnQueue(T e)
    {
      if((rear+1)%QueueSize==front)  //隊(duì)滿條件 
        throw "上溢";
      rear=(rear+1)%QueueSize;
      data[rear]=e;
    }
    T DeQueue()
    {
      if(rear==front)//隊(duì)空條件 
        throw "下溢";
      front=(front+1)%QueueSize;
      return data[front];
    }
    T GetQueue()
    {
      if(rear==front)//隊(duì)空條件 
        throw "下溢";
      return data[(front+1)%QueueSize];
    }
    bool empty()
    {
      if(front==rear) //隊(duì)空條件:front==rear 
        return true;
      return false;
    }
};

#endif

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

相關(guān)文章

  • C++ com編程學(xué)習(xí)詳解

    C++ com編程學(xué)習(xí)詳解

    這篇文章主要介紹了C++ COM編程的學(xué)習(xí)過程,在C++中,可以使用抽象基類來實(shí)現(xiàn)COM接口,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • 關(guān)于C++中的友元函數(shù)的一些總結(jié)

    關(guān)于C++中的友元函數(shù)的一些總結(jié)

    以下是對(duì)C++中的友元函數(shù)進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下
    2013-09-09
  • C語言 詳細(xì)講解數(shù)組參數(shù)與指針參數(shù)

    C語言 詳細(xì)講解數(shù)組參數(shù)與指針參數(shù)

    這篇文章主要介紹了C語言中數(shù)組參數(shù)與指針參數(shù)的分析,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C語言數(shù)組全面詳細(xì)講解

    C語言數(shù)組全面詳細(xì)講解

    數(shù)組是一組有序的數(shù)據(jù)的集合,數(shù)組中元素類型相同,由數(shù)組名和下標(biāo)唯一地確定,數(shù)組中數(shù)據(jù)不僅數(shù)據(jù)類型相同,而且在計(jì)算機(jī)內(nèi)存里連續(xù)存放,地址編號(hào)最低的存儲(chǔ)單元存放數(shù)組的起始元素,地址編號(hào)最高的存儲(chǔ)單元存放數(shù)組的最后一個(gè)元素
    2022-05-05
  • opengl實(shí)現(xiàn)任意兩點(diǎn)間畫圓柱體

    opengl實(shí)現(xiàn)任意兩點(diǎn)間畫圓柱體

    這篇文章主要為大家詳細(xì)介紹了opengl實(shí)現(xiàn)任意兩點(diǎn)間畫圓柱體,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C語言實(shí)現(xiàn)經(jīng)典掃雷游戲流程

    C語言實(shí)現(xiàn)經(jīng)典掃雷游戲流程

    掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來詳解每一步分析
    2021-11-11
  • 一文詳解C++11中的lambda函數(shù)

    一文詳解C++11中的lambda函數(shù)

    小編可以明確告訴大家:lambda函數(shù)是C++11中最重要的,使用最廣泛的,最具現(xiàn)代風(fēng)格的內(nèi)容,lambda函數(shù)的出現(xiàn)改變了C++編程的思維方式。所以快和小編學(xué)習(xí)一下C++11中l(wèi)ambda函數(shù)的使用吧
    2023-02-02
  • 帶你理解C語言中的漢諾塔公式

    帶你理解C語言中的漢諾塔公式

    大家好,本篇文章主要講的是帶你理解C語言中的漢諾塔公式,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++實(shí)現(xiàn)將簡單密碼譯回原文的方法

    C++實(shí)現(xiàn)將簡單密碼譯回原文的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)將簡單密碼譯回原文的方法,可實(shí)現(xiàn)將簡單的字母位移類型的密碼譯回原文的功能,涉及C++簡單字符串操作相關(guān)技巧,需要的朋友可以參考下
    2016-05-05
  • Qt連接數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查操作

    Qt連接數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查操作

    這篇文章主要為大家詳細(xì)介紹了Qt如何連接數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查等基本操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09

最新評(píng)論