第三章栈和队列精品.ppt

第三章 栈和队列 如何从后缀式求值? 先找运算符, 再找操作数 a × b + ( - c / d × e ) f 后缀式 栈 # × + ( - / × a b × c d e / - f # × + 从原表达式求得后缀式的规律为: 1) 设立暂存运算符的栈; 2) 设表达式的结束符为“#”, 预设运算符栈的栈底为“#” 3) 若当前字符是操作数, 则直接发送给后缀式; 4) 若当前运算符的优先数高于栈顶运算符,则进栈; 5) 否则,退出栈顶运算符发送给后缀式; 6) “(” 对它之前后的运算符起隔离作用,“)”可视为自相应左括弧开始的表达式的结束符。 从原表达式求得后缀式的规律为: void transform(char suffix[ ], char exp[ ] ) { InitStack(S); Push(S, ?#?); p = exp; ch = *p; while (!StackEmpty(S)) { if (!IN(ch, OP)) Pass( Suffix, ch); else { } if ( ch!= ?#? ) { p++; ch = *p; } else { Pop(S, ch); Pass(Suffix, c

文档评论(0)

1亿VIP精品文档

相关文档