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 25 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 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
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
python中类的一些方法分析
2014/09/25 Python
详解python进行mp3格式判断
2016/12/23 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python如何把字符串类型list转换成list
2020/02/18 Python
PyQt5实现登录页面
2020/05/30 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
实习生的自我评价
2014/01/08 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
总裁助理岗位职责
2014/02/17 职场文书
群教班子对照检查材料
2014/08/26 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
单位委托函范文
2015/01/29 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
阿里云日志过滤器配置日志服务
2022/04/09 Servers