首页 > 试题广场 >

数组Q[0..m-1]用来表示一个循环队列, 用front指

[单选题]
数组Q[0..m-1]用来表示一个循环队列, 用front指向队头元素,rear指向队尾元素的后一个位置 则当前队列中的元素数是。(队列总的元素数不会超过队列大小)


  • (rear-front+m)% m
  • rear-front+1
  • rear-front-1
  • rear-front
因为是循环链表 rear不一定就比front地址高 所以有可能rear-fornt得到结果是负数 所以为了正确性起见需要+m再%m
发表于 2018-05-29 17:35:44 回复(1)
情况1 : size = rear - front 情况2: size = (rear - 0) + (m - front) = m + rear - front 综合:size = (m + rear -front) % m
发表于 2018-05-02 11:27:18 回复(0)
记着就好
发表于 2017-05-22 10:24:33 回复(2)
队列的队长=(rear-front+queue)%queue
发表于 2019-02-27 18:32:36 回复(0)
循环链表尾指针有可能在头指针前。所以。
发表于 2018-06-11 10:19:37 回复(0)
rear和front一定会小于m,数组是一个循环队列,rear和front位置不确定,可能rear-front<0也可能rear-front>0,在题中rear是指向队尾元素的后一个位置,所以在rear-front>0时,元素个数为rear-front不需要加1;当rear-front<0时,元素个数为rear-front+m。综合以上两式则,元素个数为(rear-front+m)%m
发表于 2022-12-09 15:45:49 回复(0)
为什么不是(rear-front+1+m)%m
发表于 2022-06-06 18:19:07 回复(1)
我一下子做了三个一模一样的题目!😫
发表于 2019-01-08 10:40:50 回复(0)

要判断两者的位置关系


发表于 2018-09-23 23:36:31 回复(0)
队尾指针与对头指针的位置
发表于 2017-07-27 00:53:40 回复(0)
2种情况讨论的综合
发表于 2017-07-21 18:32:09 回复(0)
当rear-front>0时,元素个数为rear-front;由于队列元素的删除等操作,头指针向后移动(front>0),当尾指针移动至下标为m-1的位置时,队列未满,因此在循环队列中会出现rear<front的情况,在计算队列长度时不能直接使用l=rear-front。为了避免出现计算错误,通过在公式中加入m并对m取模的办法来合并所有的队列情况,得到l=(rear-front+m)%m的通用计算公式。
发表于 2023-11-09 19:41:36 回复(0)
可以这样想:rear+m是把数组扩容了,然后再-front,取模是因为不会超过m
发表于 2023-09-12 10:53:17 回复(0)
因为是循环链表,rear的地址不一定比front高,所以rear-front的值可能是负的,所以+m再%m
发表于 2023-06-17 17:42:32 回复(0)
有没有大佬能详细说一下原理
发表于 2022-10-14 16:05:56 回复(0)
矩阵可存入数组 循环队列也可用数组存 分2种情况 头--尾<m 或者头&#45;&#45;尾="">m 前者依序排 后者超出部分取模排</m>
发表于 2022-04-14 12:27:06 回复(0)
他问元素数不应该是m吗
发表于 2022-02-26 20:15:14 回复(0)
rear在数值上可能小于front
发表于 2022-02-08 18:41:49 回复(0)
不懂
发表于 2018-04-09 15:10:07 回复(0)