首页 > 试题广场 >

用数组 M[0..N-1] 用来表示一个循环队列,&n...

[单选题]
用数组 M[0..N-1] 用来表示一个循环队列, FRONT 指向队头元素,REAR 指向队尾元素的后一个位置,则当前队列中的元素个数是几个?(注:队列总的元素数不会超过队列大小)
  • rear-front+1
  • rear-front-1
  • (rear-front+n)%n
  • (rear-front)%n
因为是循环链表 rear不一定就比front地址高 所以有可能rear-fornt得到结果是负数 所以为了正确性起见需要+n再%n
发表于 2019-08-07 15:06:17 回复(0)
队空条件:front == rear 
队满条件:(rear+1) %QueueSize == front 
队列长度:(rear—front + QueueSize) % QueueSize
编辑于 2022-02-05 19:42:33 回复(0)
记住!循环队列,队头地址不一定比队尾高或者低的!
发表于 2022-03-06 17:52:13 回复(0)
<p>因为rear指向为下一个地址,所以当front&gt;rear时rear-front=已经存入的个数</p>
发表于 2020-11-25 20:57:19 回复(0)
队空条件:front == rear 
队满条件:(rear+1) %QueueSize == front 
队列长度:(rear—front + QueueSize) % QueueSize
根据条件,选择c
发表于 2022-06-16 11:43:16 回复(0)
队空条件:front == rear 队满条件:(rear+1) %QueueSize == front 队列长度:(rear—front + QueueSize) % QueueSize
发表于 2023-02-11 14:01:43 回复(1)
当rear-front>0时,元素个数为rear-front;由于队列元素的删除等操作,头指针向后移动(front>0),当尾指针移动至下标为n-1的位置时,队列未满,因此在循环队列中会出现rear<front的情况,在计算队列长度时不能直接使用l=rear-front。为了避免出现计算错误,通过在公式中加入n并对n取模的办法来合并所有的队列情况,得到l=(rear-front+n)%n的通用计算公式。
发表于 2023-11-09 19:40:40 回复(0)
循环队列有可能是从大到小,头减去尾或许为负数,为了正确性起见可以加n再对n取余得到一个正数
发表于 2022-09-29 16:36:59 回复(0)
本质上是由于语言取余的特性 -8%3=-2 -8%-3=-2 是对绝对值取模,符号取决于被除数 跟数学上的余数定义不同
发表于 2022-03-01 22:01:21 回复(0)
出队front由于加1可能会大过rear,所以需要加上元素个数再取模?
发表于 2022-02-28 00:54:35 回复(0)