php的算术表达式求值,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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值