设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()答案是(rear-front+35)%35,这个是什么东西啊,都看不懂,那个%是什么意思啊?我只知道用rear-front,然后看得到正数要怎么弄?负数又怎么弄?这种类型的题目应该怎么做呀?哪位大侠能说详细些,讲解得好,我能明白的话,我会加分的,谢谢!

问题描述:

设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()
答案是(rear-front+35)%35,这个是什么东西啊,都看不懂,那个%是什么意思啊?
我只知道用rear-front,然后看得到正数要怎么弄?负数又怎么弄?这种类型的题目应该怎么做呀?哪位大侠能说详细些,讲解得好,我能明白的话,我会加分的,谢谢!

如果是正数就不用加35了,如果是负数才要加35
这一题明显是个小陷阱,开始时候front=rear ,结束了还是front=rear 说明进来的和出去的一样多啊,你看 如果这是进来一个元素rear就加1,变成rear=1(因为是1:35啊,就是说元素只能排在1-35之间,35排完了就满了吗,没有 35排完了如果再进来元素就该排在1的位置上了.而不是36,这你得明白)
好了 进来一个rear加1 出去一个呢,front加1 就这样进来出去,进来出去,到最后front和rear还是相等的,那不就说明进来和出去的一样多嘛.这样一来最后的元素就和原来的元素一样多了,明显不是0就是35,因为要么队空(0个元素),要么队满(35个元素)
%是求余数用的 10%3=1,就是这个意思 那个公式就是纯粹数学公式,和编程,语言都没关系.
这种题你画一张图最好理解了,当然短一点最好,弄个队列长度为6的,自己动动手,出对入队的画画就全明白了