首页 > 试题广场 >

题目来源于王道论坛 已知循环队列存储在一维数组A[0.

[单选题]
题目来源于王道论坛

已知循环队列存储在一维数组A[0...n-1]中,且队列非空时front和rear分别指向队头元素和队尾元素。若初始时队列为空,且要求第1个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是()。

  • 0,0
  • 0,n-1
  • n-1,0
  • n-1,n-1
看到一个相对权威书上写的,利用front=rear=0来判断一个循环队列是否为空,如果向循环队列插入一个元素使得front=rear,那么就可以判断循环队列为满。因此,在实际计算时,一般不允许循环队列为满的情况(至少空一个位置),当插入一个元素使得front=rear,此时就可以将循环队列长度成倍增加,阻止队满现象。所以这题应该还是有争议的!
发表于 2019-05-06 10:46:39 回复(0)
循环队列需要留出一个空间,方便判断队列是否为满(循环队列解决假溢出);
常用的队列实现:
当队列为空时,front == rear;其中rear指向队尾元素的下一个位置,即下一个元素入队的位置
入队操作:先赋值,再rear = (rear+1)%MAXSIZE;此时rear仍然指向队尾元素的下一个位置

但是题目中!!!有一句!!!front和rear分别指向队头元素和队尾元素!!!
rear指向队尾元素!!!
把常用的队列实现方法来了个886
那么,在这道题中,判断队满和队空我是一时半会想不下去了。。。(front == (rear + 1)%MAXSIZE 既可以是满,也可以是空啊= =,除非说还要留一个空间出来)

但是!!!
这道题说,初始时队列为空,无论如何还是front == (rear + 1)%MAXSIZE.

简单的说就是,队列是空的,rear指向队尾元素,front指向队头元素,入队了,(rear +1)%n,这个时候A[0]既是队头元素,也是队尾元素,rear = front = 0;所以是rear = n-1
编辑于 2019-04-12 12:30:27 回复(1)
front和rear相等,队列应为空,并且注意,两者指向第一个最后一个元素,并非前一个或后一个,题不够严谨,为什么是rear=n-1
发表于 2018-09-11 20:46:05 回复(1)
选B。因为入队只会修改rear指针,且修改规则为:(rear +1)%n 。若要入队后rear指向0,则初始时,rear要指向 n-1。入队不影响front指针,所以还是初始值0。
发表于 2018-11-13 14:29:29 回复(4)

队列非空时front和rear分别指向队头元素和队尾元索”,根据这句话当队列只有一个元素时袭,front==rear;当队为空时,front == (rear + 1)%n;

进队的操作为:
rear = (rear + 1) % n ;
Queue[rear] = elem ;

ps:

11年的统考题 玩文字游戏 建议下次出脑筋急转弯

发表于 2020-05-13 11:46:28 回复(0)
该题根本上就是错题,尽管他是统考真题。。原因如下:
1.按常规约定来,空队列时front==rear,与本题“答案”不符合
2.评论中不少同学说,因为本题说了空队列时front和rear分别指向队列首尾元素。但是,空队列是不含元素的,哪怕把空当作一个元素,那此时首尾也是同一个元素,这句话完全不能说明front != rear
3.即使按照“答案”要求,令front == 0,rear == n-1,此时依然会有问题。显然rear是指向的空元素,那么在第一个元素入队的时候,入的是A[n-1],而不是A[0],rear所指的A[0]是空的。
发表于 2020-11-13 06:15:25 回复(0)
为什么不能先放值再移动指针呢,这也初始时都指向0
发表于 2020-07-04 16:05:46 回复(0)

font指向队头元素,且题目指定对头元素下标为零,所以font初始为零;进队列时rear加一为零,故rear初始为n-1

发表于 2019-09-01 23:02:13 回复(0)
不是在rear放值,然后修改rear= (rear +1)%n     ???
发表于 2019-08-17 15:24:57 回复(1)
题目已经说明rear指向队尾元素了,就不要管合不合理了
发表于 2019-08-06 22:37:36 回复(0)
那么问题来了,既然是循环队列,可以头尾分离,那为什么不可以头尾不分离呢?都是n-1也没毛病啊???请举出不能选n-1,n-1的理由或反例。
发表于 2019-08-06 10:09:44 回复(1)
这种是非正常配置的循环队列,队空时front==(rear+1)%maXsize,
发表于 2019-07-19 20:02:46 回复(0)

初始的时候,队列为空,对头和队尾不是应该相等吗?为什么不选D?

发表于 2019-04-22 21:17:38 回复(0)
答案不对吧?
发表于 2019-03-14 14:25:15 回复(0)