题目:
我们输入的四则运算属于中继表达式,计算机在处理四则运算时,是先将中继表达式转换成后继表达式,然后进行计算,现在给出指定的后继表达式,计算出结果。
思路:
数据结构:栈
算法:遍历,遇到数字入栈,遇到四则运算符弹出2个数字,用后弹出的和先弹出的做运算,计算后再入栈。
代码:
$tokens = ["4", "13", "5", "/", "+"];
$res = [];
for($i = 0; $i < count($tokens); $i++){
if($tokens[$i] == '+'){
$a = array_pop($res) ;
$b = array_pop($res) ;
array_push($res, $b + $a);
}elseif($tokens[$i] == '-'){
$a = array_pop($res) ;
$b = array_pop($res) ;
array_push($res, $b - $a);
}elseif($tokens[$i] == '*'){
$a = array_pop($res) ;
$b = array_pop($res) ;
array_push($res, $b * $a);
}elseif($tokens[$i] == '/'){
$a = array_pop($res) ;
$b = array_pop($res) ;
array_push($res, (int)($b / $a));
}else{
array_push($res, $tokens[$i]);
}
}
print_r($res[0]);