首页 > 试题广场 >

判定循环队列的满与空,有三种方法,它们是[$##$],[$#

[问答题]

判定循环队列的满与空,有三种方法,它们是[$##$],[$##$]和[$##$]。

1.设标志位法  2.预留一位法; 3.预存长度法

1.设标志位法  

思路:预设一个标志,tag,初值=0,每当入队成功,tag=1;每当出队成功,tag=0;那么,当front==rear &&  tag 则表示“在入队操作之后front=rear”,显然入队造成的f=r的原因就是满了,故 front==rear &&  tag 表示队列满;同理,front==rear && !tag 表示队列空。

2.预留一位法:  

思路:让front指向头部之前的那一位,rear指向尾部,这样一来,实际使用空间是SIZE-1。

当front=(rear+1)%SIZE or  (front==-1 && rear=SIZE-2)  的时候,说明满了(其实没有满,但是剩下的那个空间不可用)

当front==rear的时候,说明空。

3.预存长度法:

思路:就是加一个变量存储长度,入队成功+1,出队成功-1,=0空,=SIZE满


编辑于 2019-10-08 12:15:37 回复(0)