C語(yǔ)言算法積累加tag的循環(huán)隊(duì)列
題目:
若希望循環(huán)隊(duì)列中的元素都能得到利用,則需設(shè)置一個(gè)標(biāo)志域tag,并以tag的值為0或1來(lái)區(qū)分隊(duì)頭指針front和隊(duì)尾指針rear相同時(shí)的隊(duì)列狀態(tài)是“空”還是“滿”。
試編寫與此結(jié)構(gòu)相應(yīng)的入隊(duì)和出隊(duì)算法。
關(guān)鍵字:
循環(huán)隊(duì)列+tag的使用
思路 :
循環(huán)隊(duì)列:
需要變量:隊(duì)頭指針front,隊(duì)尾指針rear,增減元素的開關(guān):tag
1)入隊(duì)算法
尾插法:Q.data[Q.rear]=x;Q.rear=(Q.rear+1)%Maxsize;Q.tag=1
隊(duì)空條件:Q.front== Q.rear且Q.tag==0
2)出隊(duì)算法
頭結(jié)點(diǎn)刪除:x=Q.data[Q.front];Q.front=(Q.front +1)%Maxsize;Q.tag=0
隊(duì)滿條件:Q.front == Q.rear且Q.tag=1
注意:當(dāng)刪除之后鏈表為空時(shí),還需增加一步,將尾指針指向頭結(jié)點(diǎn)
1.設(shè)“tag”法的循環(huán)隊(duì)列入隊(duì)算法:
int EnQueue1(SqQueue &Q, ElemType x){ if(Q.front==Q.rear&&Q.tag==1) return 0; Q.data[Q.rear]=x; Q.rear=(Q.rear+1)%MaxSize; Q.tag=1; return 1; }
2.設(shè)“tag”法的循環(huán)隊(duì)列入隊(duì)算法:
int DeQueue1(SqQueue &Q, ElemType &x){ if (Q.front==Q.rear&&Q.tag==0) return 0; x=Q.data[Q.front]; Q.front=(Q.front+1)%MaxSize; Q.tag=0; return 1; }
以上就是C語(yǔ)言算法積累加tag的循環(huán)隊(duì)列的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言算法tag循環(huán)隊(duì)列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++標(biāo)準(zhǔn)模板庫(kù)vector的常用操作
今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板庫(kù)vector的常用操作,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12matlab?GUI指紋識(shí)別門禁系統(tǒng)介紹及源碼實(shí)現(xiàn)
這篇文章主要為大家介紹了matlab?GUI指紋識(shí)別門禁系統(tǒng)的介紹及源碼實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02C++11計(jì)時(shí)器之chrono庫(kù)簡(jiǎn)介
C++11有了chrono庫(kù),可以在不同系統(tǒng)中很容易的實(shí)現(xiàn)定時(shí)功能,要使用chrono庫(kù),需要#include,其所有實(shí)現(xiàn)均在std::chrono namespace下,本文給大家介紹C++11計(jì)時(shí)器:chrono庫(kù)介紹,感興趣的朋友一起看看吧2023-12-12