永发信息网

为什么顺序队列为空的条件不是是front=-1,rear=0

答案:5  悬赏:0  手机版
解决时间 2021-02-13 18:58
  • 提问者网友:美人性情
  • 2021-02-12 18:14
为什么顺序队列为空的条件不是是front=-1,rear=0
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-02-12 19:05
rear一般指向下一个位置。
没有元素。这个具体要看定义,最好有原代码。你可以把原代码贴出来,我给你具体分析。这只是大家习惯这样,你具体怎么写都没关系的。一定不要死记硬背,考场上给你一段源代码,他没准写成rear指向下三个位置,用的时候-3再用,那也没错。得学会分析。
不过一般来说顺序队列都是包含首不包含尾的。你这个场景应该是首尾都不包含。
补充:这个怎么分析,要看他插入队列(rear)和离开队列(front)这两个地方怎么操作的。如果是先插入再移动指针,说明不包含尾;如果是先移动指针再插入,说明是包含尾。首部是管离开队列的,要看离开队列,或者取队首元素的代码。如果是先取出队首值,再移动指针,说明是包含首;如果是先移动指针,再取队首值,说明不包含。
这个场景,一个-1,一个0,应该是先移动队首,再取值,说明是不包含队首;先插入队尾,再移动队尾,说明不包含队尾。
谢谢啦!
全部回答
  • 1楼网友:大漠
  • 2021-02-12 21:40
因为是循环队列,循环队列的思想是如果队头有空余的位置,则可以把数据插入到队头,从而是一个圈 q->front==q->rear+1明显是一个判定条件,判定当前队列是否已满,当当前队列q->front正好为0,q->rear为(maxsize-1,即整个队列的最后一个),q->rear+1就溢出了,(q->rear+1)%maxsize正好就是0,从而可以判断front和rear+1是不是同一个位置
  • 2楼网友:渊鱼
  • 2021-02-12 21:26
当front=0,rear=0时候,再进行入队运算,rear会向等于rear+1,也就是第一个元素是data[1],这样front 指向的就是第一个元素data[1]的前一个元素。 我觉得front=-1也可以,但是后面入队的操作就要改一下。 初学小白,自己的看法,望dalao指正。
  • 3楼网友:笑迎怀羞
  • 2021-02-12 20:07
请问 为什么循环队列的初始状态为空时,rear和front要等于m?为什么不等于0? 谢谢了
  • 4楼网友:上分大魔王
  • 2021-02-12 19:45
因为是循环队列,循环队列的思想是如果队头有空余的位置,则可以把数据插入到队头,从而是一个圈 q->front==q->rear+1明显是一个判定条件,判定当前队列是否已满,当当前队列q->front正好为0,q->rear为(maxsize-1,即整个队列的最后一个),q->rear+1就溢出了,(q->rear+1)%maxsize正好就是0,从而可以判断front和rear+1是不是同一个位置
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯