登录  /  注册
PHP教程之PHP实现基于栈的后缀表达式求值功能
小云云
发布: 2023-03-17 11:48:01
原创
1097人浏览过

后缀表达式是什么?后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。本文PHP教程主要是用实例讲述PHP实现基于栈的后缀表达式求值功能。分享给大家供大家参考,具体如下:

实现代码:

<?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实现基于栈的后缀表达式求值功能的详细内容,更多请关注php中文网其它相关文章!

相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学