算法:逆波兰表达式(后继表达式)求值

题目:

我们输入的四则运算属于中继表达式,计算机在处理四则运算时,是先将中继表达式转换成后继表达式,然后进行计算,现在给出指定的后继表达式,计算出结果。

思路:

数据结构:栈

算法:遍历,遇到数字入栈,遇到四则运算符弹出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]);
发布了200 篇原创文章 · 获赞 26 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/why444216978/article/details/103303078