内蒙古大学《算法与数据结构》讲义06队列
29页1、下载第6章队列像堆栈一样,队列也是一种特殊的线性表。队列的插入和删除操作分别在线性表的两端进行,因此,队列是一个先进先出( first-in-first-out, FIFO)的线性表。尽管可以很容易地从线性表类L i n e a r L i s t(见程序3 - 1)和链表类C h a i n(见程序3 - 8)中派生出队列类,但在本章中并没有这样做。出于对执行效率的考虑,我们把队列设计成一个基类,分别采用了公式化描述和链表描述。在本章的应用部分,给出了四个使用队列的应用。第一个应用是关于 5 . 5 . 3节所介绍的火车车厢重排问题。在本章中对这个问题做了修改,要求缓冲铁轨按 F I F O方式而不是L I F O方式工作;第二个应用是关于寻找两个给定点之间最短路径的问题,这是一个经典的问题。可以把这个应用看成是5 . 5 . 6节迷宫问题的一种变化,即寻找从迷宫入口到迷宫出口的最短路径。 5 . 5 . 6节中的代码并不能保证得到一条最短的路径,它只能保证如果存在一条从入口到出口的路径,则一定能找到这样一条路径(没有限定长度) ;第三个应用选自计算机视觉领域,主要用于识别图像中的图
2、元;最后一个应用是一个工厂仿真程序。工厂内有若干台机器,每台机器能够执行一道不同的工序。每一项任务都由一系列工序组成。我们给出了一个仿真程序,它能够仿真工厂中的任务流。该程序能够确定每项任务所花费的总的等待时间以及每台机器所产生的总的等待时间,可以根据这些信息来改进工厂的设计。为了获得较高的执行效率,本章中每个应用都采用了队列数据结构。在后续章节中还会介绍其他几种队列应用。6.1 抽象数据类型定义队列 队列(q u e n e)是一个线性表,其插入和删除操作分别在表的不同端进行。添加新元素的那一端被称为队尾( r e a r ),而删除元素的那一端被成为队首( f r o n t )。一个三元素的队列如图6-1a 所示,从中删除第一个元素 A之后将得到图6-1b 所示的队列。如果要向图6-1b 的队列中添加一个元素 D,必须把它放在元素C的后面。添加D以后所得到的结果如图6-1c 所示。图6-1 队列举例所以,队列是一个先进先出( F I F O)的线性表,而堆栈是一个先进后出( L I F O)的线性表。队列的抽象数据类型描述见ADT 6-1。a)b)c)ADT6-1 队列的抽象数据
3、类型描述抽象数据类型Queue 实例有序线性表,一端称为f r o n t,另一端称为r e a r;操作C reate (): 创建一个空的队列;IsEmpty (): 如果队列为空,则返回t r u e,否则返回f a l s e;IsFull ( ) :如果队列满,则返回t r u e;否则返回f a l s e;First (): 返回队列的第一个元素;Last ( ) :返回队列的最后一个元素;Add (x): 向队列中添加元素 x;Delete (x): 删除队首元素,并送入x;6.2 公式化描述假定采用公式(6 - 1)来描述一个队列。location (i) = i- 1(6 - 1)这个公式在公式化描述的堆栈中工作得很好。如果使用公式( 6 - 1)把数组q u e u e M a x S i z e 描述成一个队列,那么第一个元素为 q u e u e 0 ,第二个元素为q u e u e 1 ,。f r o n t总是为0,r e a r始终是最后一个元素的位置,队列的长度为 r e a r + 1。对于一个空队列,有 r e a r =1。使用公式(6 - 1)
4、 ,图6 - 1中的队列可以表示成图6 - 2的形式。图6-2 使用公式(6 - 1)描述图6 - 1中的队列向队列中添加一个元素时,需要把r e a r增1,并把新元素放入q u e u e r e a r 。这意味着一次添加操作所需要的时间为O ( 1 )。删除一个元素时,把位置1至位置n的元素分别左移一个位置,因此删除一个元素所花费的时间为( n ),其中n为删除完成之后队列中的元素数。如此看来,公式(6 - 1)应用于堆栈,可使堆栈的插入和删除操作均耗时( 1 ),而应用于队列,则使队列的删除操作所需要的时间达到( n )。如果采用公式(6 - 2) ,就可以使队列的删除操作所需要的时间减小至( 1 )。location (i) = location (1) + i- 1(6 - 2)从队列中删除一个元素时,公式( 6 - 2)不要求把所有的元素都左移一个位置,只需简单地把location ( 1 )增加1即可。图6 - 3给出了在使用公式(6 - 2)时,图6 - 1中各队列的相应描述。注意,在使用公式(6 - 2)时,f r o n t =location ( 1 ),r
5、e a r =location (最后一个元素),一个空队列1 9 0第二部分数 据 结 构下载a)b)c)具有性质r e a r f r o n t。如图6-3b 所示,每次删除操作将导致f r o n t右移一个位置。当r e a r 0时(表明队列未满) ,为了能够继续向队列尾部添加元素,必须将所有元素平移到队列的左端(如图 6 - 4所示) ,以便在队列的右端留出空间。对于使用公式( 6 - 1)的队列来说,这种平移操作将使最坏情况下的时间复杂性增加( 1 ),而对于使用公式(6 - 2)的队列来说,最坏情况下的时间复杂性则增加了( n )。所以,使用公式(6 - 2)在提高删除操作执行效率的同时,却降低了添加操作的执行效率。图6-3 使用公式(6 - 2)描述图6 - 1中的队列图6-4 队列的平移a) 移位之前b) 移位之后若使用公式(6 - 3) ,则队列的添加和删除操作在最坏情况下的时间复杂性均变成( 1 )。location (i) = (location (1) + i -1) % M a x S i z e(6 - 3)这时,用来描述队列的数组被视为一个环(如图
《内蒙古大学《算法与数据结构》讲义06队列》由会员东***分享,可在线阅读,更多相关《内蒙古大学《算法与数据结构》讲义06队列》请在金锄头文库上搜索。
幼儿园大班科学活动《智能留言机》课件
幼儿园大班语言绘本阅读《手电筒看见了什么》PPT
幼儿园小班科学《教宝宝认识动物》课件
幼儿园中班语言《灰狼家的小饭桶们》教案
【国家审计报告】审计报告W-06审计处罚决定书
【企业财务管理办法】会计档案管理办法
【员工主动离职-风险防范】劳动争议判决书
【员工被动离职-后续工作】70-070员工违反有关商业秘密的约定可以索赔吗
【员工被动离职-辞退申请】第六节 员工任免通知书
【员工被动离职-后续工作】70-050因员工的原因使服务期无法完成可以索赔吗
企业岗位管理制度12办公室行为规范
企业岗位管理制度30离职人员薪资发放通知单
幼儿园春游活动美丽的公园教案
呼职院电力机车制动机讲义11高速列车和重载列车制动
武理工《运输管理》教案第1章 运输系统
中海大海洋化学讲义02海洋的形成和海水的组成——兼论地球上水的起源、变迁和循环
武理工船舶柴油机习题库及答案04燃油喷射和燃烧
厦大海洋生态学课件07海洋初级生产力
华北理工水声学课件05声波在目标上的反射和散射-1目标强度及常见声纳目标的目标强度的一般特征
武理工船舶结构与设备课件02船体结构与管系-4专用船特殊船体结构特点
2023-09-25 37页
2023-09-25 10页
2023-09-25 33页
2023-09-25 26页
2023-04-03 8页
2023-04-03 4页
2023-04-03 8页
2023-03-29 10页
2023-03-22 10页
2023-03-20 8页