您好,登錄后才能下訂單哦!
本篇文章為大家展示了PHP如何使用棧完成高級(jí)計(jì)算器,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
當(dāng)出現(xiàn)'3+4*3-2'這個(gè)字符串的時(shí)候,我們頭腦中會(huì)有很多的辦法去計(jì)算這個(gè)結(jié)果,比如eval/正則等等方法,但是今天小夢(mèng)給大家講的是它的底層的實(shí)現(xiàn)原理,棧
代碼思路如下:
1、一個(gè)數(shù)棧,存放數(shù)字,一個(gè)符號(hào)棧,存放運(yùn)算符
2、循環(huán)掃描字符串,如果是數(shù)字就入數(shù)字棧,如果是運(yùn)算符將分為以下情況:
(1)如果符號(hào)棧為空將直接入棧
(2)如果當(dāng)前的運(yùn)算符(即將入棧的運(yùn)算符)的優(yōu)先級(jí),小于等于符號(hào)棧頂部運(yùn)算符的優(yōu)先級(jí) ,將在數(shù)字棧中出棧兩個(gè)數(shù)字然后在符號(hào)棧中出棧一個(gè)運(yùn)算符進(jìn)行計(jì)算,之后將計(jì)算結(jié)果存入數(shù)字棧,運(yùn)算符存入符號(hào)棧
(3)如果運(yùn)算符的優(yōu)先級(jí)大于符號(hào)棧頂部運(yùn)算符,那么將直接入棧
3、計(jì)算結(jié)果:如果符號(hào)棧為空,將計(jì)算完畢,計(jì)算步驟為:從數(shù)字棧出棧兩個(gè)數(shù)字和符號(hào)棧中出棧一個(gè)符號(hào)棧進(jìn)行計(jì)算,然后存入數(shù)字棧,之后運(yùn)算結(jié)果在數(shù)字棧中
上代碼了:
over,完畢了
上述內(nèi)容就是PHP如何使用棧完成高級(jí)計(jì)算器,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。