三栈16年讲义.ppt

后缀表达式求值 使用一个栈,当从左向右扫描表达式时,每遇到一个操作数就送入栈中保存,每遇到一个运算符就从栈中取出两个操作数进行当前的计算,然后把结果再入栈,直到整个表达式结束,这时送入栈顶的值就是结果。 例如:3*(7 – 2 ) (1)要正确求值,首先了解算术四则运算的规则: a. 从左算到右 b. 先乘除,后加减 c. 先括号内,后括号外 由此,此表达式的计算顺序为: 3*(7 – 2 )= 3 * 5 = 15 中序表达式计算 (2)根据上述三条运算规则,在运算的每一步中,对任意相继出现的算符?1和?2 ,都要比较优先权关系。 栈的应用(中缀表达式求值) + - * / ( ) # + - * / ( = ) # = 当前运算符 栈顶运算符 运算符的优先级比较 (3)算法思想: 设定两栈:操作符栈 OPTR ,操作数栈 OPND 栈初始化:设操作数栈 OPND 为空;操作符栈 OPTR 的栈底元素为表达式起始符 ‘#’; 依次读入字符:是操作数则入OPND栈,是操作符则要判断: if 当前表达式操作符 栈顶元素,则退栈、计算,结果压入OPND栈; 当前表达式操作符

文档评论(0)

1亿VIP精品文档

相关文档