1.3.10 #
解答 #
官方 JAVA 代码:InfixToPostfix.java。
其实就是把右括号换成相应运算符
对于 (A + B),忽略左括号,数字直接输出,运算符入栈,遇到右括号时再弹出
结果 A B +,变成后序表达式
代码 #
// 其实就是把右括号换成相应运算符
// 对于 (A + B),忽略左括号,数字直接输出,运算符入栈,遇到右括号时再弹出
// 结果 A B +,变成后序表达式
var stack = new Stack<string>();
var input = "( 1 + ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ) )".Split(' ');
foreach (var n in input)
{
if (n == " ")
{
continue;
}
if (n == "+" || n == "-" || n == "*" || n == "/")
{
stack.Push(n);
}
else if (n == ")")
{
Console.Write(stack.Pop() + " ");
}
else if (n == "(")
{
continue;
}
else
{
Console.Write(n + " ");
}
}
Console.WriteLine();