题目:
若希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时的队列状态是“空”还是“满”。
试编写与此结构相应的入队和出队算法。
关键字:
循环队列+tag的使用
思路 :
循环队列:
需要变量:队头指针front,队尾指针rear,增减元素的开关:tag
1)入队算法
尾插法:q.data[q.rear]=x;q.rear=(q.rear+1)%maxsize;q.tag=1
队空条件:q.front== q.rear且q.tag==0
2)出队算法
头结点删除:x=q.data[q.front];q.front=(q.front +1)%maxsize;q.tag=0
队满条件:q.front == q.rear且q.tag=1
注意:当删除之后链表为空时,还需增加一步,将尾指针指向头结点
1.设“tag”法的循环队列入队算法:
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.设“tag”法的循环队列入队算法:
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的循环队列的详细内容,更多关于c语言算法tag循环队列的资料请关注<计算机技术网(www.ctvol.com)!!>其它相关文章!
需要了解更多c/c++开发分享C语言算法积累加tag的循环队列,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/1238100.html