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 相关文章推荐
学习使用PHP数组
Oct 09 PHP
通过对php一些服务器端特性的配置加强php的安全
Oct 09 PHP
php 正则匹配函数体
Aug 25 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
php设置编码格式的方法
Mar 05 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
php注册登录系统简化版
Dec 28 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP实现链表的定义与反转功能示例
Jun 09 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
节电标语大全
2014/06/23 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python
Python基于百度AI实现抓取表情包
2021/06/27 Python