```#中缀表达式转换为后缀表达式
class Infix():
def __init__(self):
self.s2=[] #存储后缀表达式的栈
def create_suffix(self,expressions):
stack=[] #存储操作符的栈
for e in expressions:
if e=='(':
stack.append(e)
elif e==')':
tmp= stack.pop()
while tmp!='(':
self.s2.append(tmp)
tmp=stack.pop()
elif e in ['+','-','*','/']:
while len(stack)>=0:
if len(stack)==0:
stack.append(e)
break
else:
tmp= stack.pop()
if self.GetPriority(tmp)<self.GetPriority(e) or tmp=='(':
stack.append(tmp)
stack.append(e)
break
else:
self.s2.append(tmp)
else:
self.s2.append(e)
while stack:
self.s2.append(stack.pop())
def GetPriority(self,num):
if num=='+':
return 1
elif num=='-':
return 1
elif num=='*':
return 2
else:
return 2
if __name__=="__main__":
t=Infix()
expression='9+(3-1)*3+10/2'
t.create_suffix(expression)
print(''.join(t.s2))
Python中缀表达式转换为后缀表达式
最新推荐文章于 2024-08-08 14:39:51 发布