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 301转向实现代码
Sep 18 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
PHP实现货币换算的方法
Nov 29 PHP
PHP使用in_array函数检查数组中是否存在某个值
Mar 25 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP面向对象法则
2012/02/23 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
python 控制语句
2011/11/03 Python
编写Python CGI脚本的教程
2015/06/29 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Django框架反向解析操作详解
2019/11/28 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
厨师岗位职责
2013/11/12 职场文书
高中物理教学反思
2014/02/08 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2015政治思想表现评语
2015/03/25 职场文书
预备党员考察意见范文
2015/06/01 职场文书
狂人日记读书笔记
2015/06/30 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Python 中的Sympy详细使用
2021/08/07 Python
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技