- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 31 页 ? 求迷宫路径算法 若当前位置“可通”, 则纳入路径,继续前进; 若当前位置“不可通”, 后退一个位置,换方向继 续探索; 若四周“均已探索”, 则后退一步,将当前位置 从路径中删除出去,换方 向继续探索。 3.2 栈的应用举例 第 32 页 ? 求迷宫路径算法 若当前位置“可通”, 则纳入路径,继续前进; 若当前位置“不可通”, 后退一个位置,换方向继 续探索; 若四周“均已探索”, 则后退一步,将当前位置 从路径中删除出去,换方 向继续探索。 3.2 栈的应用举例 1 2 3 4 5 6 7 8 9 1 2 3 3 入口 出口 6 4 8 5 9 第 33 页 ? 求迷宫中一条从入口到出口的路径的算法 设定当前位置的初值为入口位置; do { 若 当前位置可通,且没被访问过 则 { 当前位置插入栈顶; // 保存在路径中 若该位置是出口位置,则算法结束; 否则切换当前位置的第一个相邻方块为新 的当前位置; } 否则 // 当前位置不可通或在已走过的路径上 { …… } } while( 栈不空); 第 34 页 { 若栈不空 栈顶位置退栈;新的当前位置为退栈位置 若 栈不空且当前位置的四周均已探索过, 则 { 栈顶位置退栈;新的当前位置为退栈位置 直至找到不是四周均已探索过的位置或栈空 ; } 若 当前位置尚有未被探索的方向 , 则设定新的当前位置 为 : 按(下、右、左、上)的顺序找到的当前位置的下一相邻 块; } 若栈空退出 while 循环,表明迷宫没有通路。 // 当前位置不可通或在已走过的路径上 第 35 页 1 )问题的提出 从键盘一次性输入一串算术表达式,给出计算结果。 2+3*(5-4)=5 栈的应用举例-表达式求值 3.2 栈的应用举例 第 36 页 2 )表达式的构成 操作数 + 运算符 + 界符 1 2 3 4 如何确定运算符的运算顺序? 常数 + 、 - 、 * 、 / ( ) 、 # 3.2 栈的应用举例 3 )表达式的求值 : 例: 5+6 ? (1+2)-4 按照四则运算法则,上述表达式的计算过程为: 5+6 ? (1+2)-4 = 5+6 ? 3-4 = 5+18-4 = 23-4 = 19 第 37 页 4 )算符优先关系表 表达式中任何相邻运算符 ? 1 、 ? 2 的优先关系有: ? 1 ? 2 : ? 1 的优先级 低于 ? 2 ? 1 = ? 2 : ? 1 的优先级 等于 ? 2 ? 1 ? 2 : ? 1 的优先级 高于 ? 2 + θ 2 θ 1 - * / ( ) # + - * / ( ) # = = 注: θ 1 、θ 2 是相邻算符,θ 1 在左,θ 2 在右 3.2 栈的应用举例 第 38 页 5 )算符优先算法
文档评论(0)