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 URL编码解码函数代码
Mar 10 PHP
PHP 翻页 实例代码
Aug 07 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
php实现文件下载更能介绍
Nov 23 PHP
php实现递归的三种基本方式
Jul 04 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
浅谈PHP封装CURL
Mar 06 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中join和split用法实例
2015/04/14 Python
python保存文件方法小结
2018/07/27 Python
在Django中实现添加user到group并查看
2019/11/18 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
管理专员自荐信
2014/01/26 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
党员查摆剖析材料
2014/10/10 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书