预习队列

1.空队列时,front等于rear,现在当队列满时,也是front等于rear,那么如何判断此时的队列究竟是空还是满呢?

答:方法一:设置一个标志变量flag,当front==rear,且flag== 0 时队列为空,当front==rear,且flag==1时队列为满

方法二:当队列空时,条件就是front==rear,当队列满时,我们修改其条件,保留一个元素空间。也就是说,队列满时,数组中还有一个空闲单元。例如图4-12-8所示,我们就认为此队列已经满了,也就是说,我们不允许图4-12-7的右图情况出现。

2.队列的特点是什么?

答:先进先出,插入的一端为队尾,删除的一端为队头。

3.队列顺序存储的不足是什么?

答:我们假设一个队列有n个元素,则顺序存储的队列需建立一个大于n的数组,并把队列的所有元素存储在数组的前n个单元,数组下标为0的一端为队头。所谓的入队列操作,其实就是在队尾追加一个元素,不需要移动任何元素,因此时间复杂度为O(1),如图4-12-1所示。

与栈不同的是,队列元素的出列是在队头,即下标为0的位置,那就意味着,队列中的所有元素都向前移动,以保证队列的队头,也就是下标为0的位置 不为空,此时时间复杂度为O(n), 如图4-12-2所示。

4.什么是队列的假溢出?

答:队列满了,出队前两个元素,继续入队,因数组末尾元素已经占用,再向后加,就会产生数组越界的错误,可实际上,队列在下标为0和1的地方还是空闲的,这种现象叫做“假溢出”。

5.什么是循环队列?

答:队列头尾相接的顺序存储结构被称为循环队列。

6.计算队列长度公式是什么?

答:(rear - front + QueueQize)% QueueSize              rear是队尾指针,front是队头指针,QueueSize是队列的最大尺寸。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值