order_dic = {'*':4,' $':5,'/':4,'+':3,'-':3} if op1 == '('或op2 == '(':返回False
elif op2 == ')':返回True
else:if order _ DIC[op 1]& lt;order_dic[op2]:返回False
else:返回Truedef infix2prefix(string):
前綴= ' '
stack = []
string_tmp = ' '
對於字符串中的s[::-1]:如果s == '(':
string_tmp += ')'
elif s == ')':
string_tmp += '('
否則:
string _ tmp+= s for s in string _ tmp:if s . is alpha():
prefix = s+prefix else:while len(stack)和o order(stack[-1],s):
op = stack.pop()
prefix = op+prefix if len(stack)= = 0或s!= ')':
stack.append否則:
stack.pop() if len(stack):
前綴=“”。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,' = = & gt',infix 2 prefix(string)12345678910112131415161718192021222324258
輸出
& gt& gt& gt
A+B*C == >+A *公元前
(A+B)*C == >*+ABC
((A-(b+ C))* D)$(E+F)= = & gt;$*-A+BCD+EF1234