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教程孙仲岳主讲
Jan 07 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
php中hashtable实现示例分享
Feb 13 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
PDO::query讲解
Jan 29 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
PHP使用Redis实现Session共享的实现示例
May 12 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
SONY SRF-40W电路分析
2021/03/02 无线电
openflashchart 2.0 简单案例php版
2012/05/21 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
javascript的BOM汇总
2015/07/16 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
js实现简易ATM功能
2020/10/27 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python引用模块和查找模块路径
2016/03/17 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python3图片文件批量重命名处理
2019/10/31 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
颐和园英文导游词
2015/01/30 职场文书
六年级语文教学反思
2016/03/03 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis