ijpq
2016-08-29 08:44
采纳率: 100%
浏览 2.1k
已采纳

一道经典的计算机联考循环队列选择题

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

我的疑问是:如果按照这样操作,在入队第一个数据后,rear=front=0,那么此时的判断队列为空的条件就不应该照搬按照一般教科书上写的if(rear==front)来判定了吧?如果按照题目要求操作,队空判定条件应该改为什么呢?我觉得(rear+1)%maxsize=front无法区分队空和队满了,是不是应该引入tag标识符了?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 山的那一面 2016-08-30 13:31
    已采纳

    顺序队 数组的元素最少为1,因为要空出来一个,即定义的buf[max] max的初值最少为1 空的情况下也是front=0,rear=max-1=0,两个数的值相等,插入后会更新max的值,如:插入一个后max值为2,所以队满队空的条件还是成立的,也就是说rear对应的元素是个空值

    打赏 评论
  • 候鸟_ 2016-08-29 09:47
    打赏 评论
  • hpu刘 2016-08-29 09:57

    题目好奇怪,初始化时front和rear的值不应该都为0吗

    打赏 评论

相关推荐 更多相似问题