一道数据结构 循环队列的题目,求助!

题目是:已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一位置,则在队列不满的情况下,队列的长度是:_____PS:详细说... 题目是:
已知循环队列的存储空间大小为m,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一位置,则在队列不满的情况下,队列的长度是:_____

PS:详细说下思路,一道填空题,答案我有。
我答的是rear-front,但不对,不知道哪错了,还有哪些情况请说明
知道的朋友说下,满意一定追加!
展开
 我来答
jimmyc2006
2010-12-21 · TA获得超过1153个赞
知道小有建树答主
回答量:572
采纳率:100%
帮助的人:640万
展开全部
队列长度应该为:(rear - front + m)% m
循环队列主要是两种情况:
1.front在上面,比如一个长度为5的循环队列:-代表空,x代表有数据
|-------5|
|-------4| <-rear
|xxxxxx3|
|xxxxxx2|<-front
|-------1|
那么队列的长度是rear-front是没有问题的
2.由于是循环队列,入队的时候从尾巴进,出来的时候从front出来,如果情况1再进来2个元素就变为
|xxxxx5|
|xxxxx4|
|xxxxx3|
|xxxxx2|<-front
|-------|<-rear
显然,这种情况下用rear-front得出来的结果就不正确了,所以就出来上面的公式了
其实我觉得取绝对值也可以吧
mao668316
2010-12-21 · TA获得超过247个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:180万
展开全部
队列长度应该为:(rear - front + m)% m
注:%表示取余
循环对列故求其长度类似时钟,例如:晚上22:00睡觉,早上6点起床,共睡了:(6-22+24)%24=8
能明白吗??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式