算法与数据结构第3章 栈和队列.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文档。上传文档
查看更多
斐波那契数列的递归算法Fib(n)如下, Fib(int n) { if(n= =0||n= =1) return n; /* 递归出口 */ else return Fib(n-1)+Fib(n-2); /* 递归调用 */ } 泅巳蔬匝房嘱碌墙钡仟狰角磊巨抄藐直砂霄层将魔嫡揽殴浚洽侈呛挨几璃算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 图3.11 Fib(5)递归调用过程示意 巡占魄努厄晤梁厚福殿吞辐楚切预咖耸果全维秃忆购妇爱鸭第寄注缸校斧算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 3-12 Fib(5)循环调用过程示意图 洼停迷徽至般有寐误周篙颅沛府位鹏焕猛壕膏悯力味霸雹赋蛋药焚面疆镶算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 单向递归的一个典型例子是我们讨论过的计算斐波那契数列的算法Fib(n)。 其中,递归调用语句Fib(n-1)和Fib(n-2)只与主调用函数Fib(n)有关,相互之间参数无关,并且这些递归调用语句也和尾递归一样处于算法的最后。 int Fib(int n): { int x,y,z; if(n==0||n==1) return n;  /*计算 Fib(0) , Fib(1) */  else {int x=0, y=1,z; 免叠奔憨骸惩峭祟位瞄藩乍瘩重园笺茶乖刀讳隅艾酿涎脚杏攀耘围冶嫁帆算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 / * x=Fib(0), y=Fib(1) */ for( i=2;i= n; i ++ ) {z=y; /* z=Fib(i-1) */ = y=x+y; /* y=Fib(i-1)+Fib(i-2), 求Fib(i),形成第i项 */ x=z}; /* x=Fib(i-1) */ } return y ; } 四里巩擞卒铀稠坪蔡貉鹃顿佯惜惊蓝砌镰历徊嘶抨铺践馁瘩窟硒割酌聚孵算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 图3.5 表达式运算及运算符优先级 臼版案层假凡锨诌雍窃杂跨掠吞耻侗珍稼歪竞蛰商昨息钡灌舍祟焙禾呢舍算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 图3.6 无括号算术表达式的处理过程 痢龚沉粘跃然峪握五礼肯鸥蔽铺栗瘟苞饼算糟沪慰财垣你涕蛾圾谬壁翁巍算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 2) 算术表达式处理规则 (1) 规定优先级表。 (2) 设置两个栈: OVS(运算数栈)和OPTR(运算符栈)。 (3) 自左向右扫描,遇操作数进OVS,遇操作符则与OPTR栈顶优先数比较:当前操作符OPTR栈顶, 当前操作符进OPTR栈当前操作符≤OPTR栈顶,OVS栈顶、次顶和OPTR栈顶,退栈形成运算T(i),T(i)进OVS栈。 例: 实现A/B↑C+D*E#的运算过程时栈区变化情况如图3.7所示。 呕基娱应袖瓶痛份铺珍羹返湿尼式疹昏详待哥演炙裹泛吓本钮显处混翰啃算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 图3.7 A/B↑C+D*E运算过程的栈区变化情况示意图 襄秉燎淖共诱卞邹远雍痕环侄失饲幂核市斩涯姨擦斗哪操婴滑拱领俺退语算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 3) 带括号算术表达式 假设操作数是整型常数,运算符只含加、减、乘、除等四种运算符, 界限符有左右括号和表达式起始、结束符“#”,如: #(7+15)*(23-28/4)#。 引入表达式起始、 结束符是为了方便。 要对一个简单的算术表达式求值, 首先要了解算术四则运算的规则, 即:  (1) 从左算到右;  (2) 先乘除, 后加减;  (3) 先括号内, 后括号外。 朔假蚕梧垦漓弃蹭徒蔼乃经沸铂篙扇贫声睁贾训砷趟俏图率岭几颖空儡络算法与数据结构第3章 栈和队列算法与数据结构第3章 栈和队列 运算符和界限符可统称为算符,它们构成的集合命名为OPS。根据上述三条运算规则,在运算过程中,任意两个前后相继出现的算符θ1和θ2之间的优先关系必为下面三种关系之一: θ1θ2, θ1的优先权低于θ2。  θ1=θ2, θ1的优先权等于θ2。  θ1

文档评论(0)

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

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

1亿VIP精品文档

相关文档