- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 课件 栈的应用举例
大整数相加 相加从低位开始,输出从高位开始 用两个栈保存操作数(大整数) 结果保存到结果栈 四周加墙 八个方向移动表 表达式计算问题 中缀表示→转后缀表示 先对中缀表达式按运算优先次序加上括号,再把操作符后移到右括号的后面并以就近移动为原则,最后将所有括号消去。 如中缀表示 (A+B)*D-E/(F+A*D)+C,其转换为后缀表达式的过程如下: 利用栈将中缀表示转换为后缀表示 使用栈可将表达式的中缀表示转换成它的前缀表示和后缀表示。 为了实现这种转换, 需要考虑各操作符 的优先级。 各个算术操作符的优先级 isp叫做栈内(in stack priority)优先数 icp叫做栈外(in coming priority)优先数。 操作符优先数相等的情况只出现在括号配对或栈底的“;”号与输入流最后的“;”号配对时。 中缀表达式转换为后缀表达式的算法 操作符栈初始化,将结束符‘#’进栈。然后读入中缀表达式字符流的首字符ch。 重复执行以下步骤,直到ch = ‘#’,同时栈顶的操作符也是‘#’,停止循环。 若ch是操作数直接输出,读入下一个字符ch。 若ch是操作符,判断ch的优先级icp和位于栈顶的操作符op的优先级isp: 若 icp(ch) isp(op),令ch进栈,读入下一个字符ch。 若 icp(ch) isp(op),退栈并输出。 若 icp(ch) == isp(op),退栈但不输出,若退出的是“(”号读入下一个字符ch。 算法结束,输出序列即为所需的后缀表达式。 表达式计算的算法 中缀转后缀算法见课本120 后缀表达式计算的算法见课本118 如何从后缀式求值? 1 2 ? 3 4 2 / ? 6 ? + 1 1 2 2 2 3 2 3 4 2 3 4 2 2 3 2 1 1 1 1 6 1 6 从左到右扫描表达式 1.碰到操作数则入栈 2.碰到操作符则,从栈中弹出两个操作数加以计算,计算结果入栈 在后缀式中,优先权高的运算符领先于优先数权的运算符出现。也即任意三个相对位置紧邻的操作符opi opj opk, 优先级顺序: opi=opj=opk,因此中缀式里的任一操作符须等到另一个优先级小于或等于它的操作符出现,才可输出到后缀式。 分析 “原表达式” 和 “后缀式”中的运算符: 原表达式: a + b ? c - d 后缀式: a b c ? + d - 如何从原表达式求得后缀式? 从原表达式求得后缀式的规律为: 1) 设立暂存运算符的栈; 2) 设表达式的结束符为“#”, 予设运算符栈的栈底为“#” 3) 若当前字符是操作数, 则直接发送给后缀式; 4) 若当前运算符的优先数高于栈顶运算符,则进栈; 5) 否则,退出栈顶运算符发送给后缀式; 6) “(” 对它之前后的运算符起隔离作用,“)”可视为自相应左括弧开始的表达式的结束符。 从原表达式求得后缀式的规律为: 优先级 操作符 1 单目-、! 2 *、/、% 3 +、- 4 、=、、= 5 ==、!= 6 7 || * * * * 例二、 数制转换 例三、 括号匹配的检验 例四、 迷宫求解 例五、 表达式求值 例一、 大整数相加 数制转换的原理为: N = (N div d)×d + N mod d 例如:(1348)10 转换成 (2504)8 的运算过程如下: N N div 8 N mod 8 计算顺序 输出顺序 1348 168 4 168 21 0 21 2 5 2 0 2 数制转换 void conversion ( ) { // 显示和输入的十进制数对应的八进制数值 InitStack(S); scanf (%d,N); while (N) { Push(S, N % 8); N = N/8; } while (!StackEmpty(S)) { Pop(S,e); printf ( %d, e ); } } // conversion 检验含两种括弧的表
您可能关注的文档
- 数据库系统Access 第1—9章练习题及答案1.doc
- 数据库说明图解.doc
- 数据库基础知识1.ppt
- 数据库背景.ppt
- 数据的属性与处理方法.ppt
- 数据结构 第五章 数组.ppt
- 数据结构 课件 二叉有哪些信誉好的足球投注网站树.ppt
- 数据结构 课件 线索二叉树.ppt
- 数据结构 课件 链表应用与变形.ppt
- 数据结构(本).ppt
- 2024必威体育精装版-部编版小学五年级语文下册《手指》教案(优秀5篇) .pdf
- 2024必威体育精装版防溺水安全教育活动总结(精选15篇) .pdf
- 2024必威体育精装版汽车改装车间工作目标和计划.pdf
- 2024必威体育精装版清明扫墓活动方案8篇.pdf
- 2024必威体育精装版村镇后备干部选拔考试复习资料(含答案).pdf
- 2024必威体育精装版村镇(社区)后备干部选拔考试复习资料及答案.pdf
- 2024最美职工评选主要事迹 .pdf
- 2024必威体育精装版村居后备干部考试应知应会题库及答案.pdf
- 2024必威体育精装版村镇(社区)后备干部选拔考试题及答案.pdf
- 2024必威体育精装版村后备干部考试参考试题(含答案).pdf
文档评论(0)