PHP使用棧完成高階計算器-接上文模擬棧
距離上一篇文章PHP模擬棧,小夢就答應了小夥伴們要使用棧來完成一個實戰的例子,今天就給大家帶來了這個例子,讓大家更加深入理解它的使用場景!
當出現'3+4*3-2'這個字串的時候,我們頭腦中會有很多的辦法去計算這個結果,比如eval/正則等等方法,但是今天小夢給大家講的是它的底層的實現原理,棧
程式碼思路如下:
1、一個數棧,存放數字,一個符號棧,存放運算子
2、迴圈掃描字串,如果是數字就入數字棧,如果是運算子將分為以下情況:
(1)如果符號棧為空將直接入棧
(2)如果當前的運算子(即將入棧的運算子)的優先順序,小於等於符號棧頂部運算子的優先順序 ,將在數字棧中出棧兩個數字然後在符號棧中出棧一個運算子進行計算,之後將計算結果存入數字棧,運算子存入符號棧
(3)如果運算子的優先順序大於符號棧頂部運算子,那麼將直接入棧
3、計算結果:如果符號棧為空,將計算完畢,計算步驟為:從數字棧出棧兩個數字和符號棧中出棧一個符號棧進行計算,然後存入數字棧,之後運算結果在數字棧中
上程式碼了:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2812889/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 表示式計算 用棧完成
- java:模擬棧操作Java
- JVM程式計數器,虛擬機器棧,本地方法棧JVM虛擬機
- 使用棧實現表示式求值,運用棧計算
- 單調棧進階-接雨水-最大矩形
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- 簡單計算器(棧的應用)
- 棧的應用——計算器的四則運算
- 使用棧結構計算中綴表示式
- C++簡易計算器自寫棧版C++
- java全棧工程師:從java後端到全棧,高階電商全棧系統大課Java全棧工程師後端
- jvm-執行時資料區(程式計數器、Java虛擬機器棧、本地方法棧)JVMJava虛擬機
- java虛擬機器 jvm 出入java棧 棧空間記憶體分配Java虛擬機JVM記憶體
- 如何編寫計算機模擬器計算機
- 表示式計算(棧的應用)
- [計算機網路]協議棧計算機網路協議
- 棧的模擬實現及常見演算法演算法
- LeetCode-20. 有效的括號(棧模擬)LeetCode
- 簡單計算器 (關於棧的一種應用)
- JVM(程式計數器,棧,堆)JVM
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- 第一章 虛擬機器棧虛擬機
- 七牛雲招聘~高階全棧開發工程師全棧工程師
- Node.js初中高階全棧高畫質影片教程Node.js全棧
- JVM學習筆記五--虛擬機器棧JVM筆記虛擬機
- 第五章:斷翼-虛擬機器棧虛擬機
- 全棧虛擬機器GraalVM初體驗全棧虛擬機LVM
- PHP 標準庫 SplStack 棧PHP
- jvm記憶體區域之虛擬機器棧JVM記憶體虛擬機
- 亞馬遜雲科技全棧式Serverless,不止於計算亞馬遜全棧Server
- 順序棧————遍歷、出棧、入棧
- WebGPU 計算管線、計算著色器(通用計算)入門案例:2D 物理模擬WebGPU
- 我們來動手編寫計算機模擬器計算機
- gothinkster/realworld:模擬Medium部落格的全棧技術學習原始碼Go全棧原始碼
- 網路虛擬化技術棧
- PHP 三年模擬五年面試之一網打盡系列(3)----- MySQL 高階PHP面試MySql
- 2021看雪SDC議題回顧 | 基於模擬模擬的藍芽協議棧漏洞挖掘藍芽協議
- 描述高頻題之佇列&棧佇列