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,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 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
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
python的链表基础知识点
2020/09/13 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
求职简历自荐信范文
2013/10/21 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
创先争优承诺书
2015/01/20 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
校长新学期致辞
2015/07/30 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python