PHP實現基于棧的后綴表達式求值功能
更新時間:2017年11月10日 11:47:35 作者:幻世2012
這篇文章主要介紹了PHP實現基于棧的后綴表達式求值功能,簡單描述了后綴表達式的概念并結合實例形式分析了php使用棧實現后綴表達式求值的相關操作技巧,需要的朋友可以參考下
本文實例講述了PHP實現基于棧的后綴表達式求值功能。分享給大家供大家參考,具體如下:
后綴表達式概述
后綴表達式,指的是不包含括號,運算符放在兩個運算對象的后面,所有的計算按運算符出現的順序,嚴格從左向右進行(不再考慮運算符的優(yōu)先規(guī)則)。
實現代碼:
<?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管理依賴(dependency)關系工具 Composer的自動加載(autoload)
Composer 是PHP的一個包依賴管理工具,類似Ruby中的RubyGems或者Node中的NPM,它并非官方,但現在已經非常流行。此文并不介紹如何使用Composer,而是關注于它的autoload的內容吧。2014-08-08
修改php.ini實現Mysql導入數據庫文件最大限制的修改方法
這里介紹修改php.ini實現Mysql導入數據庫文件最大限制的修改方法,簡單說明了wampserver服務器上針對php.ini配置文件上傳限制參數、內存限制參數以及post傳輸參數等修改方法,需要的朋友可以參考一下2007-12-12

