栈的应用
逆波兰表达式
stack=[]
s=input("请输入逆波兰表达式:")+" "
x=0
minus=False
for i in range(len(s)-1):
ch=s[i]
if ch>="0" and ch<="9": #处理2位数及以上
x=x*10+int(ch)
elif ch=="-" and s[i+1]!=" ":
minus=True
elif ch==" ":
if minus:
stack.append(0-x)
else:
stack.append(x)
print(stack)
minus=False
x=0
else:
if minus:
x=0-x
minus=False
num1=stack.pop()
num2=stack.pop()
if ch=="+":
x=num2+num1
if ch=="-":
x=num2-num1
if ch=="*":
x=num2*num1
if ch=="÷":
x=num2 / num1
print("后缀表达式计算结果为%d"%(x))
文章评论