PHP实现基于栈的后缀表达式求值功能


Posted in PHP onNovember 10, 2017

本文实例讲述了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 相关文章推荐
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php实现简单加入购物车功能
Mar 07 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 #PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 #PHP
PHP用函数嵌入网站访问量计数器
Oct 27 #PHP
PHP实现网站访问量计数器
Oct 27 #PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 #PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 #PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 #PHP
You might like
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
10个实用的PHP代码片段
2011/09/02 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
JavaScript 调试器简介
2009/02/21 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
canvas实现钟表效果
2017/02/13 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
社区道德讲堂实施方案
2014/03/21 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
美术学专业求职信
2014/07/23 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
2015年元旦标语大全
2014/12/09 职场文书
国家助学金受助感言
2015/08/01 职场文书
详解python字符串驻留技术
2021/05/21 Python
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript