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

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

php表达式求值,PHP实现基于栈的后缀表达式求值功能相关推荐

  1. 基于栈的后缀表达式求值(洛谷P1449题题解,Java语言描述)

    题目要求 P1449题目链接 分析 给出后缀表达式求值,就相当于没了括号,而且很直接. 我们需要使用栈结构来完成任务. Java原装的栈使用了很多synchronized,导致性能不佳,但我们也就将就 ...

  2. 北京林业大学数据结构实验二 基于栈的算术表达式求值算法

    第1关:基于栈的中缀算术表达式求值 参见课本P75 例3.3 #include <iostream> #include<iomanip>#define MAXSIZE 100 ...

  3. 有趣的数据结构算法10——后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果

    有趣的数据结构算法10--后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果 解题思路 实现代码 GITHUB下载连接 在前一天已经利用栈完成2进制到8进制的转换.但是栈的应用方面还有很多,本次我将 ...

  4. 用栈实现后缀表达式求解问题

    一.问题概述: 人们经常书写的数学表达式属于中缀表达式,今天要解决的是,后缀表达式的求解问题. 如下图分别为举例的中缀表达式和后缀表达式: 二.解决思路 我们用栈存储后缀表达式中的数据部分,当遇到操作 ...

  5. 中缀表达式X=A+B*(C-(D+F))/E转后缀表达式之后是什么?

    中缀表达式X=A+B*(C-(D+F))/E转后缀表达式之后是什么? ABCDF+-*E/+ ABDF+C-*E/+ ABDF+C*-E/+ ABDF+C*-E+/ 正确答案:A A+B*(C-(D+ ...

  6. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

  7. 数据结构——用栈实现后缀表达式的计算

    后缀表达式计算: " A B - C D E / F - * + G + " 在运算过程中,首先创建一个 "操作数栈" . 1.从左向右扫描,扫描到一个操作数, ...

  8. 【Java】基于栈的算术表达式求值

    定义异常类 public class ExpressionException extends RuntimeException {private static final long serialVer ...

  9. 数值分析方程求根实验matlab,基于matlab的数值分析( 非线性方程求根)上机实验报告1...

    数值分析试验报告 非线性方程求根 二分法解方程 1. 题目:用二分法求方程0133 =--x x 的所有根 2. 方法:二分法 3. 程序 function x=erfenfa(a,b) if (a* ...

最新文章

  1. python中的异常分类
  2. 2021年JVM生态中哪些是流行的、热门的、趋势是什么
  3. 利用ajax技术 实现用户注册。
  4. QT多线程run函数不能使用信号与槽
  5. asp.net学习笔记·文件上传
  6. 最易懂的layui分页
  7. 王者荣耀显示聊天服务器异常,王者荣耀功能存在异常暂时关闭怎么回事 解决办法...
  8. 【比赛分享】互联网新闻情感分析复赛top8(8/2745)解决方案及总结
  9. 最强白嫖指南---推荐11个珍藏多年的网站!
  10. java gbk转机内码_GBK/GB2312编码问题分析以及java获取汉字国标码
  11. 华为海思K3平台总体特性
  12. 网络共享显示网络设备没有其他计算机,Win10如何寻找同一网络下的其他设备 网络发现功能无法使用怎么办...
  13. java计算费用类题目
  14. VR全景制作教程|VR全景拍摄和制作竟如此简单
  15. 重庆大学计算机学院研究生奖学金评定准则,重庆大学经管学硕士生奖学金评定办法(试行).doc...
  16. 英语四级口语测试软件,2021年大学英语四级口语测试题
  17. P5167 xtq的神笔
  18. 6个越南主流社交媒体软件简单介绍
  19. LabVIEW学习分享(2)
  20. 国家、省、市三级联动下拉列表

热门文章

  1. js 解析url中search时存在中文乱码问题解决方案
  2. pythrch 启动 visdom可视化
  3. 646. Maximum Length of Pair Chain 最长的链条长度
  4. poj3237 Tree
  5. js设置百分比保留两位小数
  6. 深度学习之optimizer 优化方法
  7. 分享到:空间等各大网站 代码
  8. NSTimer、CADisplayLink、GCD 三种定时器的用法 —— 昉
  9. WGS84坐标和UTM坐标的转换
  10. iPhone开发视频教程 Objective-C部分 (51课时)