【C语言教程】算法积累加tag的循环队列详解

零 C语言教程评论100字数 778阅读2分35秒阅读模式

所需工具:

C++

聪明的大脑文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

勤劳的双手文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途,未经允许禁止转载/分享等文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

 文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

教程如下

题目:

若希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时的队列状态是“空”还是“满”。文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

试编写与此结构相应的入队和出队算法。文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

关键字:文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

循环队列+tag的使用文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

思路 :

循环队列:

需要变量:队头指针front,队尾指针rear,增减元素的开关:tag文章源自灵鲨社区-https://www.0s52.com/bcjc/cyyjc/12341.html

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”法的循环队列入队算法:

[php]
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;
}
[/php]

2.设“tag”法的循环队列入队算法:

[php]
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;
}
[/php]

 

 

零
  • 转载请务必保留本文链接:https://www.0s52.com/bcjc/cyyjc/12341.html
    本社区资源仅供用于学习和交流,请勿用于商业用途
    未经允许不得进行转载/复制/分享

发表评论