时间:2021-07-01 10:21:17 帮助过:4人阅读
实现代码:
<?php
class Stack{
  public $stack;
  public $stack_top;
  public function __construct(){
    $this->stack=array();
    $this->stack_top=-1;
  }
  public function push($data){
    $this->stack[]=$data;
    $this->stack_top++;
  }
  public function pop(){
    if(!$this->is_empty())
    {
      $this->stack_top--;
      return array_pop($this->stack);
    }else
    {
      echo "stack is empty";
    }
  }
  public function is_empty(){
    if($this->stack_top==-1)
    return true;
  }
}
$string="1243-*+63/-";
$arrs=str_split($string);
echo var_export($arrs);
$stack=new Stack();
foreach($arrs as $arr){
  switch($arr){
    case "+":$one=$stack->pop();$two=$stack->pop();$temp=$two + $one;$stack->push($temp);break;
    case "-":$one=$stack->pop();$two=$stack->pop();$temp=$two - $one;$stack->push($temp);break;
    case "*":$one=$stack->pop();$two=$stack->pop();$temp=$two * $one;$stack->push($temp);break;
    case "/":$one=$stack->pop();$two=$stack->pop();$temp=$two / $one;$stack->push($temp);break;
    default:$stack->push($arr);
  }
}
echo $stack->pop();
?>运行结果:
array (
 0 => '1',
 1 => '2',
 2 => '4',
 3 => '3',
 4 => '-',
 5 => '*',
 6 => '+',
 7 => '6',
 8 => '3',
 9 => '/',
 10 => '-',
)1
学完本文大家肯定都对后缀表达式有所了解,并且也学会了如何用PHP实现基于栈的后缀表达式求值功能,这种方法对于程序员来说很有用处,后期会介绍更多相关内容和大家共勉。
希望本文所述对大家PHP程序设计有所帮助。
相关推荐:
关于后缀表达式的3篇文章推荐
php四则运算:中缀表达式转后缀表达式例子
四则运算表达式转换为后缀表达式
以上就是PHP教程之PHP实现基于栈的后缀表达式求值功能的详细内容,更多请关注Gxl网其它相关文章!