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 中的一些经验积累
Oct 09 PHP
PHP5 安装方法
Jan 15 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
简单谈谈favicon
Jun 10 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
php ajax数据传输和响应方法
Aug 21 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python生成器generator用法示例
2018/08/10 Python
python 遍历pd.Series的index和value
2019/11/26 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
班主任个人工作反思
2014/04/28 职场文书
综合素质评价自我评价
2015/03/06 职场文书
匿名信格式范文
2015/05/27 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技