数据结构与算法(Python语言描述)课件表达式的求值.pptx

数据结构与算法(Python语言描述)课件表达式的求值.pptx

数据结构与算法(Python语言描述)课件表达式的求值

表达式求值中缀和后缀的表达式中缀:A+B*(C-D)-E/F优先级高的运算符先计算;优先级相同的自左向右计算;先括号内,后括号外;后缀:ABCD-*+EF/运算符没有优先级,运算次序自左向右;运算符的两个运算数是其之前的最后两个;后缀表达式的求值附设运算数栈;依次读入表达式的每一“项”,若是数,则将其压栈若是符,则:连续从栈中退出两个操作数b和a计算a 当前符 b并将计算结果压栈当表达式处理结束时,栈顶(唯一元素)是计算结果。后缀表达式求值算法def suffix_evaluator(exp): operators = +-*/ st = SStack()# 存已读入的运算数 for x in exp: if not x in operators: st.push(float(x)) else: b = st.pop() a = st.pop() c = calculate(a, x, b)# 子表达式“归约” st.push(c) return st.top()中缀表达式的求值计算时机:读入新的运算符时,若其优先级比前面最后读入的运算符的优先级低时,则前一个运算符可与当前已读入的最后的两个运算数计算;两处“最后读入的先处理”(LIFO),故附设两个栈:运算数栈运算符栈优先级的处理方式1优先级表:C版课本P53。表示: # y是栈顶符, x是当前读入符 def preced

文档评论(0)

1亿VIP精品文档

相关文档