数据结构 课件 第4章 队列.pptx

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

第4章队列4.1队列的应用实例及概念4.2队列的存储方式4.2.1队列的链式存储结构4.2.2队列的顺序存储结构4.3队列的有关操作4.3.1循环队列的操作实现4.3.2链队列的操作实现4.4队列的ADT定义4.5顺序循环队列的应用4.6上机实验本章小结习题1

第4章队列总体要求:熟悉队列的定义熟悉队列的抽象数据类型描述中各种操作的含义熟练掌握顺序存储队列的建立、入队列、出队列算法熟练掌握链式存储队列的建立、入队列、出队列算法核心技能点:队列应用于实际问题的能力扩展技能点:C语言环境下队列各种算法的实现2

第4章队列相关知识点:C语言数组的知识C语言结构体的知识C语言指针的知识C语言函数的知识学习重点:熟悉队列的定义熟悉队列的抽象数据类型描述中各种操作的含义掌握队列各种存储结构下算法的实现3

第4章队列4.1队列的应用实例及概念数据结构中所定义的队列与日常生活中的排队相当类似。在日常生活中,有许多是“先来先服务”的例子。例如,在银行排队等待取款的事件,或者在公共汽车站排队等车事件等等。在这些排队事件中,新来的成员总是加入在队尾,而每次离开的成员总是队列头上的成员,即入队在队尾进行,而出队在队头进行。队列是限定只能在表的一端进行插入,而在表的另一端进行删除的线性表。在表中允许插入的一端叫做队尾(Rear),允许删除的一端叫做队头(Front),向队尾插入一个元素的操作叫做入队操作,从队头取出一个元素的操作叫做出队操作。随着入队、出队操作的执行,队列的队头、队尾也不断地随之改变。由于队列的操作具有“先进先出”的特点,因此队列又称作先进先出表(FIFO,即FirstInFirstOut)。4

第4章队列在图4.1所表示的队列中,a0是队头元素,an-1是队尾元素。队列中的元素以a0,a1,…,an-1的顺序进队列。如果对这个队列执行入队操作,入队元素为an,则该队列的队尾元素就变为an;如果对这个队列执行出队操作,则队列的队头元素a0从队列中取出,当前的队头元素就变为a1。5图4.1队列结构示意图一般,一个队列是由n个元素组成的有限序列,可记作:Q=(a0,a1,…ai,…,an-1)其中,每个ai都是队列Q的数据元素,数据元素可以是各种类型,但必须属于同一种数据对象。

第4章队列6综上所述,队列是一种数据类型,其数据元素之间呈线性关系,其操作的特点是“先进先出”,主要操作有入队、出队和取队头元素等。队列在程序设计中也经常使用。一个最典型的例子就是操作系统中的作业排队。在允许多道程序运行的计算机系统中,作业输入后通常处于后备状态,由操作系统中的作业调度程序将作业调入执行。作业调度程序可以采用不同的调度策略,其中最简单的调度策略就是“先来先服务”,也就是要使用一个队列来实现这种调度策略。同样在做输出时也要按请求输出的先后次序排队。作业输出统一由操作系统中的输出程序来执行,每当输出程序传输完毕可以接收新的输出任务时,队头的输出作业从队列中退出做输出操作。凡是请求输出的作业都是从队尾进入队列的。我们先要考虑队列的存储方式,然后考虑有关的操作如何实现,在以下几节中我们将围绕这些问题展开讨论。

第4章队列74.2队列的存储方式与线性表类似,队列也有顺序存储结构与链式存储结构两种存储方式。按顺序存储结构建立起来的队列称为顺序队列,按链式存储结构建立起来的队列称为链队列。4.2.1队列的链式存储结构我们已经知道,对于使用中数据元素的个数难以事先估计,而又进出变动较大的数据结构,采用链式存储结构比采用顺序存储结构更为有利。显然,队列也可以采用这种存储方式。采用链式存储结构的队列简称为链队列,如图4.2所示。图4.2链队列示意图

第4章队列8对于一个链队列,显然需要设置两个指针,分别指向该队列的队头和队尾(分别称为头指针和尾指针),一般为了操作方便起见,我们也给链队列增加一个头结点,并令头指针指向头结点。由此,空的链队列的判别条件为头指针和尾指针均指向头结点,如图4.3(a)所示。链队列的操作即为单链表的插入和删除的特殊情形,入队操作相当于从链尾插入一个元素,出队操作相当于从链头删除一个元素。入队出队操作均可通过修改尾指针或头指针来实现,图4.3(b)~(d)展示了这两种操作进行时的指针变化情况。

第4章队列9图4.3链队列指针变化状况(a)空队列;(b)a1入队列;(c)a2入队列;(d)a1出队列

第4章队列10如前所述,链队列可以由头指针与尾指针唯一地确定,因此

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档