- def priorty(oper):
- return {'+':1,'-':1,'*':2,'/':2}.get(oper,0)
- def toPrefix(infix):
- stack = [0]*len(infix)
- output=[]
- top=0
- for index in range(len(infix)-1,-1,-1):
- if(infix[index]=='+'or infix[index]=='*'or infix[index]=='-'or infix[index]=='/'): #priority Comparing
- while(priorty(infix[index])<priorty(stack[top])):
- output.append(stack[top])
- top-=1
- if(top<len(stack)):
- top+=1
- stack[top] = infix[index]
- elif(infix[index] == ')'):
- if(top<len(stack)):
- top+=1
- stack[top] = infix[index]
- elif(infix[index] == '('):
- while(stack[top]!=')'):
- output.append(stack[top])
- top-=1
- top-=1# remove the ) operator
- else:
- if(top<len(stack)):
- output.append(infix[index])
- output+=[var for var in stack if var!=0 ]
- output.reverse()
- return ''.join(var for var in output)
- #output
- infix = "(A+B)*D+E/(F+A*D)+C"
- print(toPrefix(list(infix)))
2018年5月2日 星期三
InfixToPrefix(using python)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。