博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练习题---循环队列
阅读量:4116 次
发布时间:2019-05-25

本文共 991 字,大约阅读时间需要 3 分钟。

 

循环队列的存储空间为 Q(1:40) ,初始状态为 front=rear=40 。经过一系列正常的入队与退队操作后, front=rear=15 ,此后又退出一个元素,则循环队列中的元素个数为(39或0,且产生下溢错误)。

【解析】循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。入队运算时,队尾指针进 1 (即 rear+1 ),然后在 rear 指针指向的位置插入新元素。退队运算时,排头指针进 1 (即 front+1 ),然后删除 front 指针指向的位置上的元素。当 front=rear=15 时可知队列空或者队列满,此后又退出一个元素,如果之前队列为空,退出操作会产生错误,队列里有 0 个元素;如果退出之前队列已满 (40 个元素 ) ,执行退出后,队列里还有 39 个元素。

注意:

 

为了区分队空还是队满的清空,有三种处理方式:

1)牺牲一个单元来区分队空和队满。这时队满条件为:(rear+1)%Maxsize == front;队空仍为:front==rear;队列中元素个数为:(rear-front+Maxsize)%Maxsize;
2)增设表示元素个数的数据成员,如:Q.size==0为空,Q.size==Maxsize为满;
3)增设tag数据成员,当tag=0 且front==rear时队空,当tag==1且front==rear时队满。
而此题并未说明是哪种情况,所以fron==rear队空队满都有可能。

判定一个队列QU(最多元素为m0)为满队列的条件是()

判定队列空间是空还是满的方法:少用一个元素空间,判定队列呈“满”状态的标志是“队列头指针在队列尾指针的下一位置上(指环状的下一位置)” 意思就是说,循环队列留了一个元素空间,即当maxsize=100的时候,实际能存的数据只有99个,留一个不存的目的就是用来区分队列空还是满。因为空的时候q.rear=q.front,而满的时候就变成了(q.rear+1)%maxsize=q.front。 如果判定条件是q.rear%maxsize=q.front,就是判定头指针和尾指针是否在同一个位置上如果判定条件是(q.rear+1)%maxsize=q.front,就是判定头指针在尾指针的下一个位置上

转载地址:http://kqypi.baihongyu.com/

你可能感兴趣的文章
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
Linux设备模型(总线、设备、驱动程序和类)之四:class_register
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
弱类型、强类型、动态类型、静态类型语言的区别是什么?
查看>>