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 缓冲的免费实现方法
Oct 09 PHP
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
php生成随机数的三种方法
Sep 10 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
apache和PHP如何整合在一起
Oct 12 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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备份/还原MySQL数据库的代码
2011/01/06 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
2016/12/21 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
python实现杨辉三角思路
2017/07/14 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
惠普香港官方商店:HP香港
2019/04/30 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
大学四年职业生涯规划书范文
2014/01/02 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
语文教师求职信范文
2015/03/20 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
员工福利申请报告
2015/05/15 职场文书
2016小学新学期寄语
2015/12/04 职场文书
php引用传递
2021/04/01 PHP