- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第4章 队列 ● 本章要点 ● 队列的定义及基本运算 ● 队列的存储结构及运算实现 ●队列的应用举例 ● 本章难点 ● 循环队列、队列的链式存储结构及其运算的实现 ● 4.1 队列的定义和基本运算 在排队买东西时,通常要遵循:最先排队的人可以先买到东西出队。这种先进先出的规则应用在数据结构中称为队列。 队列是程序设计中经常用的一种数据结构,其逻辑结构是线性结构,存储结构有顺序存储和链式存储两种存储方法。 其操作特点和栈相反,队列只能在线性表的一端进行插入(入队),另一端进行删除(出队),和日常生活中的队列相似,因此队列又称为“先进先出”表(First In First Out,简称FIFO结构)。 ● 4.1.1 队列的定义 队列(Queue)是线性表的一种特殊情况,其所有的插入操作限定在表的一端进行,而所有的删除操作则限定在表的另一端进行。允许插入的一端叫做队尾(rear),允许删除的一端称为队头(front)。 队列的插入运算称为入队,删除运算称为出队。没有元素的队列称为空队列。第一个入队的元素也是第一个出队的元素。 设Q=(a1,a2,a3,…,an-1,an)队列结构,队头元素为a1,队尾元素为an,队列中元素是按照a1,a2,a3,…,an-1,an顺序进入的,退出队列也只能是这个次序。 a1 a2 a3 … an-1 an 出队 入队 ● 4.1.2 队列的基本运算 队列的基本操作除了入队(插入)和出队(删除)外,还有队列的初始化、判断队列是否为空、判断队列是否满及取队头元素等。 队列的抽象类型定义 ADT Queue{ Data={ai| ai∈Elemtype,i=1,2,…,n,n≥0} R1={(ai-1,ai)| ai-1,ai ∈Data, i=2,3, ,…,n,n≥0} 其中,an是队尾元素,a1是队头元素。 ● 4.1.2 队列的基本运算 ⑴ 队列初始化 ⑵ 入队列 ⑶ 出队列 ⑷ 取队头元素 ⑸ 队列空判断 ⑹ 销毁队列 (7) 清空队列 (8) 输出队列 (9) 返回队列的长度 ⒈ 顺序队列 队列的顺序存储结构称为顺序队列,是用一组连续的存储单元依次存放队列中的元素。在C语言中用一维数组来存放队列中的元素。因为队列的队头和队尾的位置是变化的,所以还需附设两个指针front和rear,front指针指向队列头元素的位置,rear指针指向队列尾元素的位置。约定front指针指向队列头元素所在位置的前一个位置,而rear指针指向实际队尾元素所在位置,当队列为空时,令Sq-front=Sq-rear=-1。 ● 4.1.3 队列的顺序存储结构 顺序队的类型定义 #define MAXSIZE 1024 typedef struct {Elemtype data[MAXSIZE]; int rear,front; }SeqQueue; 定义一个指向队列的指针变量 typedef SeqQueue *Sq; 0 1 Sq-rear 2 3 4 5 6 7 8 Sq-front a4 a5 a6 Sq-rear Sq-front a7 a8 a9 Sq-rear a1 a2 a3 Sq-rear ● 4.1.3 队列的顺序存储结构 Sq-front Sq-front front=rear=-1 空队 front=-1 rear=2 有3个元素 front=5 rear=8 假溢出现象 front=2 rear=5 一般情况 队列元素个数:m=(Sq-rear)-(Sq-front) 队满:m=MAXSIZE 队空:m=0 H G Q[7] Q[6] Q[5] Q[4] Q[3] Q[2] Q[1] Q[0] Sq-front=5 Sq-rear=7 由于入队的同时可能有些元素出队,队尾指针到最后,无法插入,但队列并不满,即队中元素个数少于MAXSIZE,这种现象称为假溢出。 ● 4.1.3 队列的顺序存储结构 ⒉ 循环队列 对于前面的假溢出问题,将顺序队列构造为一个环状的空间。称为循环队列。 D C B A Q[maxsize-1] Q[4] Q[3] Q[2] Q[1] Q[0] Sq-front=0 Sq-rear=4 maxsize-1 0 1 2 3 4 A B C D Sq-rear Sq-front ● 4.1.3 队列的顺序存储结构 构造成循环队列后,指针和队列元素的关系不变。在入队时,循环队列的尾指针 if(Sq-rear+1 =MAXSIZE) Sq-rear=0; else Sq-rear++; 运用“模运算” Sq-rear
您可能关注的文档
- 高中化学 第三单元课题2《金属材料》课件2.ppt
- 高中地理 3.1.3 区域经济联系课件 湘教版.ppt
- 高中政治经济生活主体归类.ppt
- 高中政治经济生活第十一课.经济全球化与对外开放.pptx
- 高中物理:《逻辑电路和自动控制》(选修3-1).ppt
- 高中政治(新课标)必修一4.1发展生产 满足消费(课件).ppt
- 高中政治必修一第四单元11-2积极参与国际经济竞争与合作.ppt
- 高二地理旅游资源及其特点.ppt
- 食用菌病害及其综合控制.ppt
- 高中政治必修一经济生活10.2 围绕主题_抓住主线.ppt
- 一线调研第115期:传统工业重镇转型发展的经验与启示—以柳州为例.docx
- 万晓:2026,存量市场怎么做增长?.docx
- 孔子文化城运营暨礼乐文化节规划方案.pptx
- 2026年财政展望:保持必要强度,优化支出方向.docx
- 2025年亚洲发展展望 ASIAN DEVELOPMENT OUTLOOK 202512 GROWTH STEADIES BUT UNCERTAINTY LINGERS.docx
- 2026年塑造未来格局的七大AI趋势研究报告 7 AI trends that will define 2026.docx
- ADB -亚洲开发银行资助项目的环境流量评估与管理 Environmental Flows Assessment and Management for ADB-Financed Projects Good Practice Note.docx
- 曹海强:高客单产品,怎样面向海外做营销?.docx
- DeepSeek论文 mHC:流形约束超连接(中文).docx
- 联合资信-持有型不动产ABS与公募REITs的衔接路径研究:基于培育机制与多层次市场的视角 2025.docx
原创力文档


文档评论(0)