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与ASP
Oct 09 PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
Linux中为php配置伪静态
Dec 17 PHP
php实现zip文件解压操作
Nov 03 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 #PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 #PHP
PHP简单实现循环链表功能示例
Nov 10 #PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 #PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 #PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 #PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 #PHP
You might like
php 地区分类排序算法
2013/07/01 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
python快速排序代码实例
2013/11/21 Python
python实现简单温度转换的方法
2015/03/13 Python
python删除列表中重复记录的方法
2015/04/28 Python
Python排序算法实例代码
2017/08/10 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
python爬虫工具例举说明
2020/11/30 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
造价工程师个人求职信
2013/09/21 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
个人授权委托书格式
2014/08/30 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
寒假致家长的一封信
2015/10/10 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS