现在的位置: 主页 > 在线留言 > 文章列表

[Python]中缀表达式转前缀表达式

作者:成都金海力科技有限公司 来源:www.scjinhaili.com 未知发布时间:2017-09-09 10:18:26
[Python]中缀表达式转前缀表达式 #判断运算符的优先级 def opOrder(op1,op2): order_dic = {'*':4,'$':5,'/':4,'+':3,'-':3} if op1 == '(' or op2 == '(': return False elif op2 == ')': return True else: if order_dic[op1] < order_dic[op2]: return False else: return True def infix2prefix(string): prefix = '' stack = [] string_tmp = '' for s in string[::-1]: if s == '(': string_tmp += ')' elif s == ')': string_tmp += '(' else: string_tmp += s for s in string_tmp: if s.isalpha(): prefix = s + prefix else: while len(stack) and opOrder(stack[-1],s): op = stack.pop() prefix = op + prefix if len(stack) == 0 or s != ')': stack.append(s) else: stack.pop() if len(stack): prefix = ''.join(stack) + prefix return prefix if __name__ == '__main__': for string in ['A+B*C','(A+B)*C','((A-(B+C))*D)$(E+F)']: print string,'==>',infix2prefix(string)

输出

>>> A+B*C ==> +A*BC (A+B)*C ==> *+ABC ((A-(B+C))*D)$(E+F) ==> $*-A+BCD+EF ,站群系统

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉做网站 https://www.feimao666.com

上一篇:ASP.net MVC 基于角色的权限控制系统的实现 下一篇:最后一页