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 相关文章推荐
综合图片计数器
Oct 09 PHP
桌面中心(四)数据显示
Oct 09 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
PHP命名空间和自动加载类
Apr 03 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP实现微信对账单处理
Oct 01 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
php分页示例分享
2014/04/30 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
在Python中编写数据库模块的教程
2015/04/29 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
Python实现名片管理系统
2020/02/14 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Python代码需要缩进吗
2020/07/01 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
水电工岗位职责
2014/02/12 职场文书
党员公开承诺书
2014/03/25 职场文书
毕业寄语大全
2014/04/09 职场文书
环保倡议书
2014/04/14 职场文书
银行爱岗敬业演讲稿
2014/05/05 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
Python实现简繁体转换
2021/06/07 Python
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript