C语言算法积累加tag的循环队列

Glory ·
更新时间:2024-11-15
· 469 次阅读

题目:

若希望循环队列中的元素都能得到利用,则需设置一个标志域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循环队列的资料请关注软件开发网其它相关文章!



c语言算法 队列 循环 循环队列 C语言 算法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号