这篇文章主要讲解了“C语言算法积累加tag的循环队列怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言算法积累加tag的循环队列怎么实现”吧!
题目:
若希望循环队列中的元素都能得到利用,则需设置一个标志域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
注意:当删除之后链表为空时,还需增加一步,将尾指针指向头结点
设“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;}
设“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的循环队列怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!