- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ②出队后为空队列时 链队运算:出队 链队运算:清空 链队运算:销毁 链队运算:打印 3.5 队列的应用 问题模型: 算法:队列初始状态011;遇到0执行补零、换行、出队、相加入队;遇到非0执行打印、出队、相加入队。 杨辉三角 【例】汽车加油站随着城市里汽车数量的急速增长,汽车加油站也渐渐多了起来。通常汽车加油站的结构基本上是:入口和出口为单行道,加油车道可能有若干条。每辆车加油都要经过三段路程,第一段是在入口处排队等候进入加油车道;第二段是在加油车道排队等候加油;第三段是进入出口处排队等候离开。实际上,这三段都是队列结构。若用算法模拟这个过程,就需要设置加油车道数加2个队列。 【例】模拟打印机缓冲区在主机将数据输出到打印机时,会出现主机速度与打印机的打印速度不匹配的问题。这时主机就要停下来等待打印机。显然,这样会降低主机的使用效率。为此人们设想了一种办法:为打印机设置一个打印数据缓冲区,当主机需要打印数据时,先将数据依次写入这个缓冲区,写满后主机转去做其他的事情,而打印机就从缓冲区中按照先进先出的原则依次读取数据并打印,这样做即保证了打印数据的正确性,又提高了主机的使用效率。由此可见,打印机缓冲区实际上就是一个队列结构。 【例】CPU分时系统在一个带有多个终端的计算机系统中,同时有多个用户需要使用CPU运行各自的应用程序,它们分别通过各自的终端向操作系统提出使用CPU的请求,操作系统通常按照每个请求在时间上的先后顺序,将它们排成一个队列,每次把CPU分配给当前队首的请求用户,即将该用户的应用程序投入运行,当该程序运行完毕或用完规定的时间片后,操作系统再将CPU分配给新的队首请求用户,这样即可以满足每个用户的请求,又可以使CPU正常工作。 问题模型:所有数据元素有个优先级,按顺序进队列,出队列时优先级最高的数据元素先出。 优先队列 设计思想:与普通队列相比较,优先队列中多了一个元素的优先级,优先级的作用体现在出队的时候。有两种考虑方法:一是按顺序入队,出队是查询优先级高的先出;二是按顺序出队,这时需要在入队时找到相应的位置插入。 1. 掌握栈和队列的特点,并能在相应的应用问题中正确选用 2. 熟练掌握栈的顺序栈和链栈的进栈出栈算法,特别应注意栈满和栈空的条件 3. 熟练掌握循环队列和链队列的进队出队算法,特别注意队满和队空的条件 小结 * * * * * * * * * * * * * * * * * * * * (3)后缀表达式的计算 迷宫求解 从入口出发,按某一方向向未走过的前方探索 若能走通,则到达新点,否则试探下一方向 ; 若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探 直到所有可能的通路都探索到,或找到一条通路,或无路可走又返回到入口点。 求解思想:回溯法 需要解决的问题: 1、表示迷宫的数据结构 2、试探方向 3、栈的设计 4、防止重复到达某点,避免发生死循环 迷宫求解 将马随机的放在n*n的棋盘上,马按照走棋规则进行移动,要求每一个方格只进入1次,走遍棋盘上全部的方格。编制程序判断该问题是否有解,若有解则求马的行走路线。 马踏棋盘问题 求解时,可采用栈的数据结构,将马的行走路线保存在栈中。每次在多个可行走路线中选择一个进行试探,其余未行走路线可以用适当的数据结构进行保存,以备回溯时使用。 3.3 队列 队列是一种先进先出(FIFO) 的线性表. 它只允许在表的一端进行插入,而在另一端删除元素 a1 a2 a3 an ... 入队列 队头 队尾 a1 a2 a3 an ... 队头 队尾 出队列 a1 a2 a3 an ... 队头 队尾 出队列 a1 a2 a3 an ... 队头 队尾 出队列 设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次通过S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。 (A)2 (B)3 (C)4 (D)6 练习 B Q.front Q.rear J5 J6 Q.front 0 1 2 3 4 5 Q.rear J5 J6 J1 J2 J3 J4 存在的问题 设数组大小为M front=0 rear=M时 再入队——真溢出 front?0 rear=M时 再入队——假溢出 因此,当rear指针 指向空间的最后一个位 置时,将它移至第一个 位置,这样队列就成为 循环队列。 循环队列的提出 无法区分队满和队空状态 循环队列的存在问题 浪费一个单元代价区别队满与队空状态 循环队列问题的解决 循
您可能关注的文档
最近下载
- BDA-淡马锡中国旅游市场洞察研究China's Travel Industry-20151130.pptx VIP
- 《建筑材料基础知识》课件.ppt VIP
- BDA-淡马锡中国娱乐行业发展洞察China Recreation Industry-20151130.pptx VIP
- 北京市八年级(下)期中考试英语试卷.docx VIP
- 二轮专题复习03 函数的定义域【二】训练题集【学生版】.docx VIP
- BDA-DST中国农产品行业及价值链解析研究EN-2016 02 06.pptx VIP
- 症瘕(子宫肌瘤)护理常规.pptx VIP
- BDA-ATHM中国二手车产业链全景图研究报告-20150519.pptx VIP
- 鲁画报社版 三年级下册心理健康教育 我能专注做事情 课件.pptx VIP
- 人畜饮水工程施工组织设计汇.doc VIP
文档评论(0)