当前位置:首页 > 日记 > 正文

PHP实现基于栈的后缀表达式求值功能

PHP实现基于栈的后缀表达式求值功能

本文实例讲述了PHP实现基于栈的后缀表达式求值功能。分享给大家供大家参考,具体如下:

后缀表达式概述

后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。

实现代码:

<?phpclass 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程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

Oracle实例启动时错误:解决ora-3200

Oracle实例启动时错误:解决ora-3200

错误,启动时,实例,电脑软件,Oracle,前言 在前一个阶段,我早上刚到公司,打开电脑查找Oracle实例启动时出现的错误。 警告:安装启动; ora-32004:过时或废弃的参数(S)数据库的实例指定 ora-16032:参数log_archive_dest目标字符串不能转换 ora-0728…

PHP中特性用法的详细介绍

PHP中特性用法的详细介绍

详细介绍,特性,电脑软件,PHP,通俗地说,在PHP中使用特征关键字是为了解决类想要集成基类的属性和方法的方法,并希望拥有其他基类,而特性通常是使用的。 特征驱动{ 公共carname美元= 'trait; 公共函数驱动(){ 回声驱动{美元-> carname } ; } } 类…

ps怎么设计水晶纹理效果的背景?

ps怎么设计水晶纹理效果的背景?

纹理,背景,水晶,效果,电脑软件,利用平时制作水晶纹理效果,其制作步骤比较复杂,主要是在通道里进行操作,现在就把操作步骤和截图分享出来,供大家参考使用。软件名称:Photoshop CS5 绿色版官方中文正式原版软件大小:104.06MB更新时间:2014-06-011、…

QQ截图不能截取右键菜单的解决方法

QQ截图不能截取右键菜单的解决方法

解决方法,右键菜单,截图,电脑软件,QQ,QQ截图不能截取右键菜单的解决方法当我们在使用QQ截图的时候发现无法截取右键菜单,当按下右键菜单再按下截图热键"Ctrl+Alt+A"却发现右键菜单不见了。其实这是热键中的Alt键在作怪,要解决这个问题也很…

excel 公式填充的方法

excel 公式填充的方法

方法,填充,公式,电脑软件,excel,  Excel中如何填充公式呢?接下来是小编为大家带来的excel 公式填充的方法,供大家参考。excel 公式填充的方法:  公式填充步骤1:在填写单元格时,之前的连续数据区域要大于或等于4行。公式填充步骤2:公式填写区…

AI怎么画一个水墨效果的樱花树?

AI怎么画一个水墨效果的樱花树?

水墨,画一,效果,樱花树,电脑软件,AI里的【斑点画笔工具】和【橡皮擦工具】对于绘制树杈是非常有用的,下面我们就来介绍一下如何利用【斑点画笔工具】和【橡皮擦工具】绘制好看、美观的樱花树。软件名称:Adobe Illustrator CS6 (AI cs6) 精简…

让IIS 支持 ISO(flv)下载

让IIS 支持 ISO(flv)下载

下载,支持,电脑软件,IIS,flv,1、打开INTERNET信息管理器 2、在以计算机名名+(本地计算机)上点右键,选择&ldquo;属性&rdquo;,点击界面中的&ldquo;MIME类型&rdquo;按钮。这里列出的是所有IIS支持解析的扩展名,在这里可根据实际需要添加、删除。 比…

Nodejs回调加超时限制两种实现方法

Nodejs回调加超时限制两种实现方法

回调,方法,超时,两种,电脑软件,Nodejs回调加超时限制两种实现方法Nodejs下的IO操作都是异步的,有时候异步请求返回太慢,不想无限等待回调怎么办呢?我们可以给回调函数加一个超时限制,到一定时间还没有回调就表示失败,继续后面的步骤。方案1:用asy…

jquery hover 不停闪动问题的解决

jquery hover 不停闪动问题的解决

解决方法,亦为,电脑软件,jquery,hover,在前端开发中用的较多的是jquery,之前遇到一个问题,一个下拉的jquery下拉菜单效果,hover上去,一直闪动,用mouseovermouseout好好的,当时没搞定,今天逛论坛看到一个方法,可以行.只怪自己之前看jquery a…

word论文排版技巧

word论文排版技巧

论文排版,技巧,电脑软件,word,又是一年毕业季,想必最让人头疼的就是论文的事情了吧?毕业论文最基本的一点就是要格式符合要求,今天给大家总结了Word论文排版九大技巧。1、用好样式编写论文,一定要使用样式,除了Word原先所提供的标题、正文等样…

PS图象处理软件是如何使一个立体效

PS图象处理软件是如何使一个立体效

图象,处理软件,海报,效果,电脑软件,很多人用PS来设计海报。用PS制作海报方便快捷,省去了很多麻烦。今天的教程结果主要由三维文字和装饰部分组成,立体字基本上是用一个简单的3D工具完成的,然后颜色和纹理需要调整,装饰部分需要慢慢收集相关材料…

解决WIN2003服务器上传文件大小限

解决WIN2003服务器上传文件大小限

服务器,文件大小,上传,电脑软件,Windows2003系统下,上传较大的文件时,出现&ldquo;Request 对象 错误 'ASP 0104 : 80004005'&rdquo;错误。更改win2003的IIS 6.0对asp的上传文件大小为200k限制,aspx的上传程序没有影响。在IIS6.0中,默认设置是…