這篇文章主要介紹“C++怎么實(shí)現(xiàn)循環(huán)順序隊(duì)列”,在日常操作中,相信很多人在C++怎么實(shí)現(xiàn)循環(huán)順序隊(duì)列問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++怎么實(shí)現(xiàn)循環(huán)順序隊(duì)列”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
化隆網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
數(shù)據(jù)結(jié)構(gòu)–用C++實(shí)現(xiàn)循環(huán)順序隊(duì)列
隊(duì)列的操作特性:先進(jìn)先出
隊(duì)列中元素具有相同類(lèi)型
相鄰元素具有前驅(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
如何盤(pán)對(duì)循環(huán)隊(duì)列堆滿(mǎn)?
隊(duì)滿(mǎn):front=rear
那么問(wèn)題就來(lái)了,隊(duì)空和隊(duì)滿(mǎn)的判斷條件相同,為了避免隊(duì)滿(mǎn)時(shí)產(chǎn)生隊(duì)空的判斷或者相反,我們需要修改隊(duì)滿(mǎn)條件使得隊(duì)空和堆滿(mǎn)的判定條件分開(kāi)。
方法:浪費(fèi)一個(gè)元素空間,隊(duì)滿(mǎn)時(shí)數(shù)組只有一個(gè)空閑單元。隊(duì)滿(mǎn)條件:(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ì)滿(mǎn)條件 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
到此,關(guān)于“C++怎么實(shí)現(xiàn)循環(huán)順序隊(duì)列”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
分享文章:C++怎么實(shí)現(xiàn)循環(huán)順序隊(duì)列
標(biāo)題路徑:http://redsoil1982.com.cn/article6/ijsgog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、ChatGPT、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)