栈的表达式求值源代码
时间: 2023-12-19 07:05:40 浏览: 96
以下是栈的表达式求值源代码:
```
def evalRPN(tokens):
stack=[]
res=0
for token in tokens:
if(token in ["+","-","*","/"]):
num1=int(stack.pop())
num2=int(stack.pop())
new_num=None
if(token == "+"):
new_num=num2+num1
elif(token == "-"):
new_num=num2-num1
elif(token == "*"):
new_num=num2*num1
elif(token == "/"):
new_num=int(num2/num1)
else:
return(None)
stack.append(new_num)
elif(token.startswith("-")):
stack.append((0-int(token[1:])))
elif(token.isnumeric()):
stack.append(token)
else:
return("NULL {0}".format(token))
return(int(stack.pop()))
```
该代码实现了逆波兰表达式的求值,使用了栈的数据结构。具体实现过程是,遍历逆波兰表达式中的每个元素,如果是数字则入栈,如果是运算符则弹出栈顶的两个元素进行运算,并将结果入栈。最终栈中只剩下一个元素,即为表达式的值。
阅读全文