我有一个问题"后缀表达式6 3 2 4 + - *
的价值是什么?"
选项包括:
一个。介于-15和-100之间
B中。介于-5和-15之间
℃。 5到-5之间的东西
d。 5到15之间的东西
电子。 15到100之间的东西
根据我的计算,我一直得到18作为答案,这将是E,但答案是答案。
我错过了什么吗?
答案 0 :(得分:1)
你错过了" - "的操作数顺序。运营商。在中缀表示法中,此计算结果为6*(3-(4+2)) = -18
。
答案 1 :(得分:0)
让我们使用堆栈来评估表达式 6 3 2 4 +-* 然后,如果得到操作数,则从左到右一个遍历,那么我们需要将其推入堆栈,如果得到操作符,则需要pop();两次,将第一个弹出的元素分配给变量 op2 ,将第二个弹出的元素分配给变量 op1 ,然后执行遍历的操作,如 op1 * op2 ,然后push();将结果再次放入堆栈,此过程一直持续到表达式的最后一个元素。因此,让我们为表达式实现stack方法。
1)现在在表达式中从左到右遍历,直到我们得到一个运算符,并在获得操作数时将其推入堆栈,因此, 遍历到'4'时,堆栈将像 6 3 2 4 +-*
{ 4 }
{ 2 } { 2 }
{ } { 3 } { 3 } { 3 }
{ 6 } { 6 } { 6 } { 6 }
Stack. Stack Stack Stack
2)6 3 2 4 +-*
Here we get an operator '+' so ,
op2 = pop(); // op2=4
op1 = pop(); // op1=2
result = op1 + op2 ; // result =6
push(result);
So new stack will be like
{ 6 }
{ 3 }
{ 6 }
Stack
3)6 3 2 4 +-*
Here again we get an operator '-' so ,
op2 = pop(); // op2=6
op1 = pop(); // op1=3
result = op1 - op2 ; // result =-3
push(result);
So, new stack will be like
{ - 3 }
{ 6 }
Stack
4)6 3 2 4 +-*
Here again we get an operator '*' so ,
op2 = pop(); // op2=-3
op1 = pop(); // op1=6
result = op1 - op2 ; // result =-18
push(result);
So, new stack will be like
{ -18 }
Stack
5)因此,最终答案将是,-18