校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 队列
题目

现有一个循环队列,其队头指针为 front,队尾指针为 rear,循环队列的总长度为 N,问怎么判断循环队列满了

A.front==rear

B.front==rear+1

C.front==rear%n

D.front==(rear+1)%n

解答

正确答案是 D

  1. 当队列不为空时,front指向队列的第一个元素,rear指向队列最后一个元素的下一个位置。
  2. 当队列为空时,front=rear
  3. 队列满时:(rear+1)%maxsiz=front,少用一个存储空间,也就是数组的最后一个存数空间不用
C 7条回复 评论
杜行知

这么久了终于弄明白这个问题

发表于 2021-12-15 23:00:00
0 0
毛大军

队满的意思就是rear往前挪一位,就和front重合,就很容易得出答案了

发表于 2019-04-27 20:46:17
0 1
窦先生

为什么不是B,指针为什么可以对一个常数求余,Thomas的算法导论写的清清楚楚就是B啊...

发表于 2018-10-23 11:12:34
0 0
小可爱

为了强制自己复习,每次碰到这种题都亲自写一遍:

队列当前元素数 : (rear-front+m)%m
判空  front = = rear
判满  front == (rear +1 )%m

此时front 指向队首,而rear指向队尾元素的后一个。但是该题没有明确说明rear是指向下一个位置还是直接指向队尾

发表于 2018-10-23 11:12:25
0 0
一零计划

队空:front==rear
队满:front=(rear+1) mod n

发表于 2018-10-23 11:12:12
0 0
花花

正确答案
D
答案解析
循环队列另设一个标志位以区别队列是空还是满,少用一个元素空间,约定以“队列头指针front在队尾指针rear的下一个位置上”作为队列“满”状态的标志。即:
队空时: front=rear
队满时: (rear+1)%maxsize=front
这样就区别了当队空和队满时,front和rear都相等的情况

发表于 2018-10-23 11:11:59
0 0
人生赢家

D 循环队列总有一位不存储数据用来标示队列满,如果rear指向这个位,则说明其队列已满,那么循环的来想这个位的下一位就是front,即front= rear+1,由于是循环队列所以再得Mod n

发表于 2018-10-23 11:11:33
0 0