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