[理学]数据结构及应用算法教程 第4章 栈和队列.pptVIP

[理学]数据结构及应用算法教程 第4章 栈和队列.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]数据结构及应用算法教程 第4章 栈和队列

4.1 栈(Stack) §4.1 栈 【教学内容】 栈、存储结构、基本操作实现算法以及栈的应用。 【教学要求】 掌握栈逻辑结构的特点。 掌握栈的不同存储方式的基本操作实现方法。 掌握栈的在实际问题应用。 【重点与难点】 顺序栈和链栈两种存储基本操作实现算法 栈的在实际问题中应用 讨论:栈是什么?它与一般线性表有什么不同? 表和栈的操作区别——对线性表 s= (a1 , a2 , …. , an-1 , an ) 顺序栈入栈操作Push函数——例如用栈存放(A,B,C,D) (注意要遵循“后进先出” 原则) 顺序栈出栈操作POP函数——例如从栈中取出‘B’ (注意要遵循“后进先出” 原则) 例1:一个栈的输入序列是12345,若在入栈的过程中允许出栈,则栈的输出序列43512可能实现吗?12345的输出呢? 43512不可能实现,主要是其中的12顺序不 能实现; 12345的输出可以实现,只需压入一个立即 弹出一个即可。 例3一个栈的输入序列为123,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么? 链 栈 说 明 讨论:为什么要设计堆栈?它有什么独特用途? 调用函数或子程序非它莫属; 递归运算的有力工具; 用于保护现场和恢复现场; 简化了程序设计的问题。 例4.3 背包问题(P70) 假设有一个能装入总体积为T的背包和n件体积分别为w1,w2, …, wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使wi1+wi2+…+wik=T,要求找出所有满足上述条件的解。 例如:当T=10,各件体积为{1,8,4,3,5,2}时,可找到下 列4组解:(1,4,3,2)、(1,4,5)、(8,2)和(3,5,2)。 §4.3 队列 【教学内容】 队列、存储结构、基本操作实现算法以及队列的应用。 【教学要求】 掌握队列逻辑结构的特点。 掌握链队列和循环队列两种队列的基本操作实现方法。 掌握队列的在实际问题应用。 【重点与难点】 链队列和循环队列两种存储基本操作实现算法 循环队列基本算法实现,假溢出的解决方案,队空、队满的判定条件;队列的在实际问题中应用 链队列示意图 顺序队示意图 例2 :数组Q[n]用来表示一个循环队列,f 为当前队列头元素的前一位置,r 为队尾元素的位置。假定队列中元素的个数小于n,计算队列中元素的公式为: (A) r-f (B)(n+f-r)% n (C)n+r-f (D) (n+r-f)% n 讨论:为什么要设计队列?它有什么独特用途? 离散事件的模拟(模拟事件发生的先后顺序); 操作系统中多道作业的处理(一个CPU执行多个作业); 3.简化程序设计。 讨论(代本章小结) 线性表、栈与队的异同点 相同点: 逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。 不同点: ① 运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。 ② 用途不同,线性表比较通用;栈用于函数调用、递归和简化设计等;队列用于离散事件模拟、多道作业处理和简化设计等。 4.4 队列的应用举例 1 1 1 2 1 2 1 3 1 3 3 1 4 1 4 6 4 1 利用循环队列的计算过程: 假设只计算 2 行, 队列的最大容量为 5。 front rear 0 1 1 0 1 0 1 1 0 front rear 1 0 1 1 2 front rear 1 0 1 1 2 front rear 1 0 0 1 2 front rear 例 4.6:杨辉三角的计算 某运动会设立 N 个比赛项目,每个运动员可以参加一至三个项目。试问如何安排比赛日程既可以使同一运动员参加的项目不安排在同一单位时间进行,又使总的竞赛日程最短。 若将此问题抽象成数学模型,则归属于“划分子集”问题。N 个比赛项目构成一个大小为 n 的集合,有同一运动员参加的项目则抽象为“冲突”关系。 例如:某运动会设有 9 个项目: A = { 0,1,2,3,4,5,6,7,8 }, 七名运动员报名参加的项目分别为: (1,4,8)、(1,7)、(8,3)、 (1,0,5)、(3,4)、(5,6,2)、 (6,4) 它们之间的冲突关系为

您可能关注的文档

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档