C語言算法積累加tag的循環(huán)隊(duì)列
題目:
若希望循環(huán)隊(duì)列中的元素都能得到利用,則需設(shè)置一個(gè)標(biāo)志域tag,并以tag的值為0或1來區(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語言算法積累加tag的循環(huán)隊(duì)列的詳細(xì)內(nèi)容,更多關(guān)于C語言算法tag循環(huán)隊(duì)列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何實(shí)現(xiàn)循環(huán)隊(duì)列
本文主要介紹了C語言循環(huán)隊(duì)列的實(shí)現(xiàn),對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法的研究有所幫助,需要的朋友可以參考下2015-07-07
OpenCV基于背景減除實(shí)現(xiàn)行人計(jì)數(shù)
本文主要介紹了如何使用OpenCV C++對(duì)視頻中的人流量進(jìn)行統(tǒng)計(jì)。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定的幫助,需要的可以了解一下2022-01-01

