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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php 无法载入mysql扩展
Mar 12 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
php中memcache 基本操作实例
May 17 PHP
基于PHP生成简单的验证码
Jun 01 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
微信自定义分享php代码分析
Nov 24 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 PHP
php-fpm中max_children的配置
Mar 15 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
php简单中奖算法(实例)
2017/08/15 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
web.py在模板中输出美元符号的方法
2014/08/26 Python
python多进程实现进程间通信实例
2017/11/24 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
财务分析个人的自荐书范文
2013/11/24 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
致100米运动员广播稿
2014/02/14 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
党支部四风整改方案
2014/10/25 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
护士2015年终工作总结
2015/04/29 职场文书
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS