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

设有一个用数组Q[1..m]表示的环形队列,约定f为当前队头元素在数组中的位置。r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为() 

解答

答案:(m+r-f)mod m
解析:(1)当尾大于头长度为 尾 - 头当尾小于头 比如尾巴在2号位置。而头在4号位置。表的长度为4 1 2,而这段长度为 总长度 - (尾 -头 ) = 总长度 - ( 尾 -头 ) 而 ( 尾 -头 ) < 0所以 得到 总长度+ ( 尾 -头 ) 。
因此合并两个表达式 得到 (总长度+ ( 尾 -头 ))%总长度 。% 防止(1)情况发生溢出。
1
4 2

C 4条回复 评论
知乎

迷茫很久也看过各式各样的答案,选不出一条自己的路真的很焦灼。没有想到原来大家的路也是一样的颠簸。

发表于 2022-05-24 21:00:00
0 0
无畏无所畏

看过之后很多感触,唯有谢谢最简单也最真诚

发表于 2021-09-11 08:15:00
0 0
晨诺

(m+r-f) mod m

发表于 2020-10-26 11:04:16
0 0
夏沐日光

(m+r-f)mod m

发表于 2020-10-26 11:01:25
0 0