首页 > 试题广场 >

设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R

[单选题]
设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R.头指针F总是指向队头元素的前一位置.尾指针R总是指向队尾元素的当前位置.则该循环队列中的元素个数为()
  • (R-F+M)%M
  • R-F
  • (F-R+M)%M
  • F-R
A (R-F+M)%M
发表于 2016-04-10 11:17:34 回复(4)
看队首指针指向哪里,若如本题,则不用加一,若指向第一个元素,也还得加一再取余
发表于 2016-04-12 16:26:38 回复(0)
发表于 2016-04-18 13:35:03 回复(3)
书中定义的队列长度为:(rear-front++QueueSize)%QueueSize

1.rear: 定义中是指向末尾元素的下一个位置, 本题中是直接指向末尾元素, 所以将rear向后移动一个位置, R-1
2.front:定义中是指向首元素, 而本题中是指向首元素的前一个元素, 因此向后移动一个位置, F-1

rear = R-1
front = F-1
所以: [ (R - 1) - ( F - 1) + M]%M  =  (R-F+M)%M

正确答案:A
发表于 2017-06-25 18:28:22 回复(1)
注意是循环队列,头可能在尾的后面,所以要+M%M
发表于 2018-01-14 22:02:39 回复(0)
(尾指针-头指针+m)%m
发表于 2017-07-07 20:09:38 回复(0)
F如果指向队头元素,则为(R-F+M+1)%M
发表于 2017-06-13 19:21:34 回复(0)