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连mysql和oracle数据库性能比较
Oct 09 PHP
php的一些小问题
Jul 03 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
php四种定界符详解
Feb 16 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
php实现每日签到功能
Nov 29 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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 正则 过滤html 的超链接
2009/06/02 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
jQuery ready函数滥用分析
2011/02/16 Javascript
js对象的比较
2011/02/26 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python随机数random模块使用指南
2016/09/09 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Python随机数函数代码实例解析
2020/02/09 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
大四自我鉴定范文
2013/10/06 职场文书
大三学习计划书范文
2014/05/02 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
美丽人生观后感
2015/06/03 职场文书
勇敢的心观后感
2015/06/09 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
Python Numpy库的超详细教程
2022/04/06 Python