1.3.11 #
解答 #
官方 JAVA 代码:EvaluatePostfix.java。
遇到数字就入栈,遇到运算符就弹出两个数字运算,再把结果入栈。
如果倒着读取的话也可以用递归做,当作前序表达式计算即可。
代码 #
var stack = new Stack<int>();
var input = "7 16 * 5 + 16 * 3 + 16 * 1 +".Split(' ');
foreach (var n in input)
{
if (n == " ")
{
continue;
}
if (n == "+")
{
stack.Push(stack.Pop() + stack.Pop());
}
else if (n == "-")
{
var temp = stack.Pop();
stack.Push(stack.Pop() - temp);
}
else if (n == "*")
{
stack.Push(stack.Pop() * stack.Pop());
}
else if (n == "/")
{
var temp = stack.Pop();
stack.Push(stack.Pop() / temp);
}
else
{
stack.Push(int.Parse(n));
}
}
Console.WriteLine(stack.Pop());