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 相关文章推荐
在PWS上安装PHP4.0正式版
Oct 09 PHP
配置支持SSI
Nov 25 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
处理单名多值表单的详解
Jun 08 PHP
PHP异常处理Exception类
Dec 11 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
css配合jquery美化 select
2013/11/29 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python上下文管理器全实例详解
2019/11/12 Python
Python for循环与getitem的关系详解
2020/01/02 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python 自动识别并连接串口的实现
2021/01/19 Python
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
数组越界问题
2015/10/21 面试题
保安自我鉴定范文
2013/12/08 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
采购员岗位职责
2015/02/03 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python