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虛擬機
- 使用棧實現表示式求值,運用棧計算
- 【PAT A1051】【棧/模擬】
- 單調棧進階-接雨水-最大矩形
- 簡單計算器(棧的應用)
- 使用棧結構計算中綴表示式
- C++簡易計算器自寫棧版C++
- java全棧工程師:從java後端到全棧,高階電商全棧系統大課Java全棧工程師後端
- jvm-執行時資料區(程式計數器、Java虛擬機器棧、本地方法棧)JVMJava虛擬機
- LeetCode-20. 有效的括號(棧模擬)LeetCode
- 2020年焊工(高階)模擬試題及焊工(高階)模擬考試
- 表示式計算(棧的應用)
- [計算機網路]協議棧計算機網路協議
- 簡單計算器 (關於棧的一種應用)
- JVM(程式計數器,棧,堆)JVM
- 第一章 虛擬機器棧虛擬機
- 全棧虛擬機器GraalVM初體驗全棧虛擬機LVM
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- 棧的模擬實現及常見演算法演算法
- 七牛雲招聘~高階全棧開發工程師全棧工程師
- PHP 標準庫 SplStack 棧PHP
- 第五章:斷翼-虛擬機器棧虛擬機
- JVM學習筆記五--虛擬機器棧JVM筆記虛擬機
- Node.js初中高階全棧高畫質影片教程Node.js全棧
- jvm記憶體區域之虛擬機器棧JVM記憶體虛擬機
- 順序棧————遍歷、出棧、入棧
- 【python測試開發棧】—幫你總結Python os模組高頻使用的方Python
- 2021看雪SDC議題回顧 | 基於模擬模擬的藍芽協議棧漏洞挖掘藍芽協議
- PHP全棧工程師必備技能select2的使用PHP全棧工程師
- 網路虛擬化技術棧
- WebGPU 計算管線、計算著色器(通用計算)入門案例:2D 物理模擬WebGPU
- time模組,collections模組,佇列和棧佇列
- 描述高頻題之佇列&棧佇列
- Java棧與棧上分配Java
- gothinkster/realworld:模擬Medium部落格的全棧技術學習原始碼Go全棧原始碼
- 資料結構之php實現棧資料結構PHP
- 【JVM之記憶體與垃圾回收篇】虛擬機器棧JVM記憶體虛擬機