- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)
您可能关注的文档
- 初中三年级下学期化学《溶解时的吸热或放热现象》教学课件.pptx
- 初中三年级下学期化学《乳化现象》教学课件.pptx
- 初中一年级下学期英语《Unit 1 Section A 1a-1c》教学课件.pptx
- 初中一年级下学期英语《Unit 1 Section A 2a-2d》教学课件.pptx
- 初中一年级下学期英语《Unit 1 单元复习》教学课件.pptx
- 初中一年级下学期英语《Unit 7 Section B 2a-2c》教学课件.pptx
- 初中一年级下学期英语《Unit 12 Section A 2b 1a-2c》教学课件.pptx
- 初中一年级下学期英语《Unit 12 Section A 2d》教学课件.pptx
- 初中一年级下学期英语《Unit 12 Section A Grammar Focus》教学课件.pptx
- 初中一年级下学期英语《Unit 12 Section B 2d》教学课件.pptx
- 2024至2030年中国企业级服务器行业市场预测与投资规划分析报告.docx
- 2024至2030年中国硬脂酸钙行业发展预测及投资策略报告.docx
- 中国钢筋砼排水沟管行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年中国粗苯市场前景及投资机会研究报告.docx
- 介质滤波器项目申请报告.docx
- 2024至2030年中国高压变频器行业研究及市场投资决策报告.docx
- 2024至2030年中国眼科器械行业市场预测与投资规划分析报告.docx
- 2024至2030年中国第三方物流产业发展前瞻及投资策略咨询报告.docx
- 2024至2030年中国能源电力行业市场预测与投资规划分析报告.docx
- 中国花式项链行业发展趋势及发展前景研究报告2024-2030年版.docx
文档评论(0)