第三章 栈和队列--wl.pptVIP

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

第三章 栈和队列 3.1 栈 3.1.1 抽象数据类型栈的定义 3.1.2 栈的表示和实现 3.2 栈的应用举例 3.2.1 数制转换 3.2.2 括号匹配的检验 3.2.3 行编辑程序 3.2.4 迷宫求解 3.2.5 表达式求值 3.3 栈与递归的实现 3.4 队列 抽象数据类型定义,链队列,循环队列 二、栈的抽象类型定义(P44) ADT Stack{ 数据对象:D={ai | ai ∈ElemSet,i=1,2,…,n,n≥0 数据关系:R1={ai-1,ai | ai-1,ai∈D,i=2,…,n} a1为栈顶,an为栈底 基本操作: InitStack(S) Destroy(S) …. Push(S,e) //入栈 Pop(s,e) //出栈 ……. }ADT Stack 迷宫求解算法(P51) //设当前位置的初值为入口位置 do{ 若当前位置可通, 则 {将当前位置插入栈顶; 若 该位置是出口位置,则结束; 否则,顺时针的下一个位置为当前位置; } 否则, {若栈不空且栈顶位置尚有其它方向未经探索; 则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置 的下一相邻块。 若栈不空,但栈顶位置的四周均不可通, 则{ 删去栈顶位置; 若栈不空,则重新测试新的栈顶位置,直到找到可通 的相邻块或出栈到栈空; } } }while(栈不空); 3.3 栈与递归的实现 一、子程序的调用 栈的另外一个用途是在子程序调用时,用来保存一些重要信息: (1)主调用函数的实在参数,返回地址 (2)被调用函数的局部变量 当信息被保存好后,转入执行子程序。当子程序结束时。要做几件事。 (1)保存计算结果 (2)释放子程序占用的数据区(内存) (3)返回保存的主调用函数的相应地址。 二、递归过程及实现 1、定义 递归指的是子程序自已调用自已的情况。递归可以使程序的编写变得非常简单。但是递归所占用的临时空间相当可观。 2、如何编写递归程序 (1)问题的描述是递归的,如: n!=n*(n-1)! (2) 解题过程是递归的,如: 汉内塔问题 (3) 问题可以分解为相同的子问题,如: 二分查找,棋盘覆盖等问题 3.递归的执行过程 例2、汉内塔问题 (1)问题描述 有A,B,C三个塔座,A上套有n个直径不同的圆盘,按直径从小到大叠放,形如宝塔,编号1,2,3……n。要求将n个圆盘从A移到C,叠放顺序不变,移动过程中遵循下列原则: .每次只能移一个圆盘 .圆盘可在三个塔座上任意移动 .任何时刻,每个塔座上不能将大盘压到小盘上 问题: (2)算法思想: (3)递归程序的编写: Hanoi(char A, int n,char B,char C) { 1 if(n==1) 2 Move(1,A,C); 3 else 4 { 5 Hanno(A,n-1,C,B); /*借助于C把A中的n-1移到B*/ 6 Move(n,A,C); /*移A中的一个(编号为n)圆盘到C*/ 7 Hanno(B,n-1,A,C); /*把B中的n-1个圆盘借C移到A*/ } } Move(int n,char A,char C) { printf(“No:%d(%c-%c)\n”,n,A,C); } (4)递归程序的执行与栈的变化(P57) 根据函数的调用的原则,我们可以认为在调用递归函数Hanoi时,栈数据元素由以下几项构成:返回地址,4个实际参数,因此可写为: typedef struct

文档评论(0)

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

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

1亿VIP精品文档

相关文档