- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 队列 与栈一样,队列也是一种操作受限的线性表。队列在操作系统和事务管理等软件设计中应用广泛,如键盘输入缓冲区问题就是利用队列的思想实现的。 本章重点和难点: 1、队列的顺序表示与实现 2、队列的链式表示与实现 5.1 队列的定义与抽象数据类型 队列只允许在表的一端进行插入操作,在表的另一端进行删除操作。 5.1.1 什么是队列 队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表,它只允许在表的一端进行插入,另一端删除元素。这与我们日常生活中的排队是一致的,最早进入队列的元素最早离开。在队列中,允许插入的一端称为队头(front),允许删除的一端称为队尾(rear)。 5.1 队列的定义与抽象数据类型 假设队列为q=(a1,a2,…,ai,…,an),那么a1为队头元素,an为队尾元素。进入队列时,是按照a1,a2,…,an的顺序进入的,退出队列时也是按照这个顺序退出的。也就是说,当先进入队列的元素都退出之后,后进入队列的元素才能退出。即只有当a1,a2,…,an-1都退出队列以后,an才能退出队列。 5.1 队列的定义与抽象数据类型 5.1.2 队列的抽象数据类型 1.数据对象集合 队列的数据对象集合为{a1,a2,…,an},每个元素都具有相同的数据类型DataType。 队列中的数据元素之间也是一对一的关系。除了第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。 5.1 队列的定义与抽象数据类型 2.基本操作集合 (1)InitQueue(Q):初始化操作,建立一个空队列Q。 (2)QueueEmpty(Q):若Q为空队列,返回1,否则返回0。 (3)EnQueue(Q,e):插入元素e到队列Q的队尾。 (4)DeQueue(Q,e):删除Q的队首元素,并用e返回其值。 (5)Gethead(Q,e):用e返回Q的队首元素。 (6)ClearQueue(Q):将队列Q清空。 5.2 队列的顺序存储及实现 5.2.1 顺序队列的表示 顺序队列通常采用一维数组依次存放从队头到队尾的元素。同时,使用两个指针分别指示数组中存放的第一个元素和最后一个元素的位置。其中,指向第一个元素的指针被称为队头指针front,指向最后一个元素的指针被称为队尾指针rear。 元素a、b、c、d、e、f、g依次进入队列后的状态如图5.2所示。元素a存放在数组下标为0的存储单元中,g存放在下标为6的存储单元中,队头指针front指向第一个元素a,队尾指针rear指向最后一个元素g的下一位置。 5.2 队列的顺序存储及实现 在使用队列前,先初始化队列,此时,队列为空,队头指针front和队尾指针rear都指向队列的第一个位置,即front=rear=0,如图5.3所示。 每一个元素进入队列,队尾指针rear就会增1,若元素a、b、c依次进入空队列,front指向第一个元素,rear指向下标为3的存储单元,如图5.4所示。 5.2 队列的顺序存储及实现 当一个元素出队列时,队头指针front增1,队头元素即a出队后,front向后移动一个位置,指向下一个位置,rear不变,如图5.5所示。 5.2 队列的顺序存储及实现 5.2.2 顺序队列的“假溢出” 在对顺序队列进行插入和删除操作的过程中,可能会出现“假溢出”现象。经过多次插入和删除操作后,实际上队列还有存储空间,但是又无法向队列中插入元素,我们将这种溢出称为“假溢出”。 例如,在图5.2所示的队列中插入3个元素h、i、j,然后删除2个元素a,b之后,就会出现如图5.6所示的情况。当插入元素j后,队尾指针rear将越出数组的下界而造成“假溢出”。 5.2 队列的顺序存储及实现 5.2.3 顺序循环队列的表示 1.顺序循环队列 为了充分利用存储空间,消除这种“假溢出”现象,当队尾指针rear和队头指针front到达存储空间的最大值(假定队列的存储空间为QueueSize)的时候,让队尾指针和队头指针转化为0,这样就可以将元素插入到队列还没有利用的存储单元中。例如,在图5.6中,插入元素j之后,rear将变为0,可以继续将元素插入到下标为0的存储单元中。这样就把顺序队列使用的存储空间构造成一个逻辑上首尾相连的循环队列。 5.2 队列的顺序存储及实现
您可能关注的文档
- 七旬老汉两周吃完两个月药险致命.doc
- 三亚交通美食购物.doc
- 三(上)31给予树.ppt
- 上世纪末的经典费下载.ppt
- 翼校通故障申告和处理指引V10(1).doc
- 考研447分经验从苦行僧到清华状元的蜕变历程.doc
- 美国漫画超级英雄.ppt
- 考研数一真题[1].doc
- 肌肉组织由特殊分化的肌细胞构成,许多肌细胞聚集在一起.ppt
- 肥皂、有机表面活性剂、洗涤剂、润滑剂、人造蜡、调.doc
- 2023-2024学年黑龙江省哈尔滨市中考数学试卷(附答案解析).docx
- 中考语文抢分秘籍专题07九年级上册重点古诗词必背知识点.docx
- 中考语文满分作文热点素材集锦及实战演练专题03 后疫情时代:写作角度+关键词+金句名言+时评+范文.docx
- 中考语文抢分秘籍秘籍06古诗文名篇名句默写(原卷版+解析).docx
- 中考语文抢分秘籍专题17中考字音、字形分册梳理.docx
- 2023-2024学年山东省济宁市中考数学试卷(附答案解析).docx
- 中考语文满分作文热点素材集锦及实战演练专题06 汶川地震被救少年14年后救火牺牲.docx
- 中考语文满分作文热点素材集锦及实战演练专题03 天宫课堂第三课.docx
- 中考语文满分作文热点素材集锦及实战演练专题04 《典籍里的中国》“大而美”古籍因此“活起来”.docx
- 2023-2024学年山东省济南市中考数学试卷(附答案解析).docx
最近下载
- SY_T 5660-2020 钻井液用包被絮凝剂 聚丙烯酰胺类.pdf VIP
- 2021-202x年基金管理人员工跟投基金投资协议-经典(律师审定版).docx
- 2010-2015年 中国电梯行业市场发展前景及投资分析报告.doc
- 78度智慧参考资料.pdf
- 基层儿科医务人员服务能力提升学习班答案-2024华医网继续教育答案.docx VIP
- DELTA台达伺服驱动器 ASDA-A2使用手册-操作说明书.pdf
- 国际贸易实务英文版(第五版)周瑞琪教材辅导习题解答.pdf
- 基于高斯滤波和近似积分的电动车窗防夹算法.pdf
- Application for Export Transaction 离岸客户填写指南.doc VIP
- 2023年膨化食品行业市场需求分析报告及未来五至十年行业预测报告.docx
文档评论(0)