中南大学最全版演示课件.ppt

如何从原表达式求得后缀式? 每个运算符的运算次序要根据它之后的一个运算符来决定,在后缀式中优先权高的运算符领先于优先权低的运算符。 分析 “原表达式” 和 “后缀式”中的运算符: 原表达式: a + b ? c ? d / e ? f 后缀式: a b c ? + d e / f ? ? * 也就是说,对原表达式中出现的每一个运算符是否即刻进行运算取决于在它后面出现的运算符,如果它的优先权“高或等于”后面的运算,则它的运算先进行,否则就得等待在它之后出现的所有优先权高于它的“运算”都完成之后再进行。   显然,保存运算符的结构应该是一个栈,从栈底到栈顶的运算符的优先权是从低到高的,因此它们运算的先后应是从栈顶到栈底的。 * 从原表达式求得后缀式的规律为: 1) 设立暂存运算符的栈; 2) 设表达式的结束符为“#”, 预设运算符栈的栈底为“#” ; 3) 若当前字符是操作数, 则直接发送给后缀式; * 4) 若当前运算符的优先权高于栈顶运算符,则进栈; 5) 否则,退出栈顶运算符发送给后缀式; “(” 对它之前后的运算符起隔离作用, “)”可视为自相应左括弧开始的表达式的结束符。 * ch 是运算符,则函数 IN(ch,OP) 的值为“TRUE” void transfor

文档评论(0)

1亿VIP精品文档

相关文档