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遍历数组的几种方法
Mar 22 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
PHP实现的装箱算法示例
Jun 23 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
js style动态设置table高度
2014/10/21 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
Python下载网络小说实例代码
2018/02/03 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
用Python写一个自动木马程序
2019/09/17 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
美国创意之家:BulbHead
2017/07/12 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
心得体会开头
2014/01/01 职场文书
发展部经理职责规定
2014/02/22 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年团队工作总结
2014/11/24 职场文书