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实现的功能是显示8条基色色带
Oct 09 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
PHP url 加密解密函数代码
Aug 26 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
php判断文件夹是否存在不存在则创建
Apr 09 PHP
Symfony2联合查询实现方法
Mar 18 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 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 常见郁闷问题答解
2006/11/25 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python实现的Excel文件读写类
2015/07/30 Python
全面理解Python中self的用法
2016/06/04 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python实现一个优先级队列的方法
2020/07/31 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
英语文学专业学生的自我评价
2013/10/31 职场文书
教师自荐信
2013/12/10 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
求职信标题怎么写
2014/05/26 职场文书
捐款通知怎么写
2015/04/24 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript