高中二年级下学期信息科技《用队列组织先进先出数据》教学课件.pptx

高中二年级下学期信息科技《用队列组织先进先出数据》教学课件.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

选择性必修1《数据与数据结构》3.3用队列组织先进先出数据|

一、队列queue|

队列的基本概念|队列是一种特殊的线性表,它只允许在表的一端进行插入,在表的另一端进行删除队尾:能进行插入的一端队头:能进行删除的一端入队:把一个数据元素插入队列中的操作叫作入队出队:从队列中删除一个数据元素的操作叫作出队空队列:队列中没有元素时,称为空队列举例:①售票窗口②排队买饭特性:先进先出(FirstInFirstOut)简称FIFO;超市为顾客提供的售后服务请求

建立数据模型|为服务请求队列建立数据模型队列{队列元素(一定数量的顾客编号);队头(即将出队的顾客的位置);队尾(即将入队的顾客的位置);}队列的基本操作;

设计自助服务系统的操作|

二、队列的基本操作Basicoperationofqueue|

队列的基本操作|对于队列,通常有以下几种基本操作:(1)初始化队列:构造一个空队列,初始化队头、队尾标志。(2)元素入队:若队列非满,插人一个元素到队列的队尾标志指向的位置,该元素成为新的队尾元素,队尾标志向后移动位。q:frontrear空队列q:frontreara1入队q:frontreara2,a3依次入队a1a1a2a3初始化队列:front=rear=0入队操作:rear=rear+1

队列的基本操作|(3)元素出队:删除队头标志指向的队头元素,队头标志向后移动一位,若此时队列非空,则队头标志指向的元素成为新的队头元素。(4)求队列长度:返回队列当前所含元素个数。(5)队空判断:若队列为空,则返回“真”,否则返回“假”(6)队满判断:若队列为满,则返回“真”,否则返回“假”假设已定义队列q、队头front、队尾rear,则初始化队列为空、入队和出队几种情况如图q:frontreara1出队a2a3q:frontreara2出队a3出队操作:front=front+1求队列长度:rear-front队空判断:front==rear队满判断:rear==maxsize

三、队列的实现-顺序队列Queueimplementation-sequentialqueue|

顺序队列顺序队列:当入队或出队时,队尾标志rear或队头标志front只能往后移动一位,且其队列的最大长度为maxsize(数组的容量),我们把这种队列成为顺序队列。|数组:frontrear顺序队列a3数组下标:012345a4a1a20≤front≤maxsize0≤rear≤maxsizemaxsize=6

顺序队列初始化队列:front=rear=0入队操作:rear=rear+1出队操作:front=front+1队空判断:front==rear队满判断:rear==maxsize求队列长度:rear-front|

顺序队列的操作代码|队头标志和队尾标志均为0,这时队列为空,没有元素初始化队列voidInit_Queue(Queueq){q.front=q.rear=0;}

顺序队列的操作代码|当front=rear时,队列为空,返回true,否则返回false。判断队列是否为空boolIsEmpty_Queue(Queueq){if(q.front==q.rear)returntrue;elsereturnfalse;}

顺序队列的操作代码|当rear=maxsize时,队列为满,返回true,否则返回false。判断队列是否为满boolIsFull_Queue(Queueq){if(q.rear==maxsize)returntrue;elsereturnfalse;}

顺序队列的操作代码|如果队列非满,则将元素x放入队尾标志rear所指位置,然后rear指向下一个位置。入队操作boolIn_Queue(Queueq,stringx){if(!IsFull_Queue(q)){ q.items[q.rear]=x; q.rear=q.rear+1;}}

顺序队列的操作代码|如果队列为空,返回空元素(NULL),否则返回队头标志front所指的元素,然后front指向下一个位置。出队操作stringOut_Queue(Queueq){if(IsEmpty_Queue(q)

您可能关注的文档

文档评论(0)

云一就是云一 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档