第4章栈和队列课题.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 栈和队列 4.4 栈的应用 4.5算术表达式的计算 4.5.1 算术表达式的两种表示 4.5.2后缀表达式求值的算法 4.5.3把中缀表达式转换为后缀表达式的算法 在计算机中进行算术表达式的计算是通过 栈来实现的。 4.6 栈与递归 一、递归的概念 一个算法直接或间接地调用自身,称该算法为递归算法。这个函数就称递归函数。 根据定义递归分为: 直接递归 ? 直接调用自己 间接递归 ? 间接调用自己 递归用把问题分解为形式更简单的子问题来求解问题。 n阶乘递归算法的执行过程: 三、递归算法的设计方法 递归既是一种有效的分析问题的方法,也是一种有效的算法设计方法。 设计递归算法的方法: 把对原问题的求解设计成包含对子问题求解的形式; (即较复杂的问题转换为较简单的问题) 设计递归出口; (简单到一定程度,直接给出结果) 例:汉诺(hannoi)塔问题 问题描述: 设有三根标号为A,B,C的柱子,在A柱上放n个盘子,每个盘子都比下面的略小一点,要求把A柱上的盘子全部移到C柱上,移动规则是: 一次只能移动一个盘子; 移动过程中大盘子不能放在小盘子上面; 在移动过程中盘子可以放在A,B,C的任意一个柱子上。 算法描述: void Towers( int n, char a, char b, char c ) { // 把n个盘从a移到c, b为辅助 if (n == 1) printf(“%c ? %c\n”, a, c); else { Towers( n-1, a, c, b ); printf( “%c ? %c\n”, a, c ); Towers( n-1, b, a, c ); } } 算法复杂度分析: 令把n个盘按规则移动所需的时间为:T(n),则 1 若 n=1 T(n) = 2T(n-1) + 1 其他情形 解上面的递推方程可得: T(n) = O(2n) 4.7 队列 递归算法与栈的关系: 调用递归函数时,自动使用栈保存下述两类信息: 调用后的返回地址; 调用函数的局部变量值(包括实参) 调用结束时,自动执行出栈操作,按返回地址返回。 main ( ) { ? f=fac(3); ? } fac(3) { ? f=3.fac(2); return f; } fac(2) { ? f=2?fac(1); return f; } fac=3! n=4 n=3 fac=2! fac(1) { ? f=1?fac(0); return f; } fac(0) { ? return 1; ? } n=1 fac=1 n=2 fac=1! 堆栈变化: 3, addr1 2, addr2 3, addr1 2, addr2 1, addr2 3, addr1 2, addr2 1, addr2 0, addr2 3, addr1 2, addr2 1, addr2 ….. Main?fac(3) fac(3)?fac(2) fac(2)?fac(1) fac(1)?fac(0) fac(1) 3, addr1 递归算法的效率分析 若循环方式的算法和递归方式的算法均能求解某问题时,通常循环方式算法的时间与空间效率均比递归方式算法要高很多。 如:n阶乘递归算法的时间复杂度与空间复杂度均为O(n),而非递归算法的空间复杂度为O(1),时间复杂度虽仍为O(n),但常数因子要小许多。 long fac( int n ) { // 求n阶乘的非递归算法,设n是大于等于0的正整数 int i; long f=1; for ( i=2; i=n; i++) f = f*i; return f; } 一、队列的基本概念 队列也是一种运算受限的线性表,只允许在表的一端进行插入(表尾),在表的另一端进行删除(表头)。 术语:队首、队尾、进(入)队、出(离)队、空队列。 a1 a2 an ??? 队首 队尾 出队列 进队列 先进先出(FIFO)的线性表 二、队列的

文档评论(0)

a5522235 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档