- 5
- 0
- 约6.65千字
- 约 66页
- 2017-06-18 发布于湖北
- 举报
第4章 栈 和 队 列 16 9 4 3 + * - 16 – 9 * ( 4 + 3 ) 4.5.3 中缀算术表达式转换为后缀算术表达式的算法 基本思路:设定一个运算符栈,栈底放入一个特殊字符@,具有最低运算符优先级。 1、扫描中缀表达式,若是空格则不加处理; 2、若为数字则直接写入后缀表达式并在后面写入一个空格; 3、若是左括号,则压入运算符栈,待括号内转换完毕再出栈; 4、若是右括号,则表明括号内表达式已经扫描完毕,把从运算符栈栈顶一直到左括号之间的运算符依次退栈并写入后缀表达式; 5、若是运算符,则判断其与栈顶运算符的优先级大小。 若为大于,则进栈,并继续扫描下一字符; 若为小于则栈顶退栈并写入后缀表达式。 优先级: @ 和( 为 0 + 和 - 为 1 乘 和 除 为 2 12+(3*(20/4)-8)*6 12 3 20 4 /*8 - 6 *+ @ 4.6 栈与递归 在递归算法中需要根据递归条件直接或间接的调用算法本身,当满足终止条件时结束递归调用。 当求解一个问题时,是通过求解与它具有同样解法的子问题而得到的,这就是递归。 一个递归的问题必然包含有终止递归的条件 我们应当谨慎使用递归算法, 因为它们的简洁可能会掩盖它们低效! 例:采用递归算法求解正整数
原创力文档

文档评论(0)