后缀表达?

时间:2014-10-16 04:57:56

标签: math expression

我有一个问题"后缀表达式6 3 2 4 + - *的价值是什么?"

选项包括:

一个。介于-15和-100之间

B中。介于-5和-15之间

℃。 5到-5之间的东西

d。 5到15之间的东西

电子。 15到100之间的东西


根据我的计算,我一直得到18作为答案,这将是E,但答案是答案。

我错过了什么吗?

2 个答案:

答案 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