利用棧將中綴表達式轉化成后綴表達式


目的:將中綴表達式(即標准形式的表達式)轉換為后綴式。

例子:a+b*c+(d*e+f)*g轉換成abc*+de*f+g*+

 

轉換原則

1. 遇到操作數, 直接輸出

2. 操作符的優先級為 () 最大, * / 次之, +- 最小. 遇到操作符后, 假如操作符堆棧為空, 則直接壓入操作符, 否則判斷當前操作符與棧頂操作符的優先關系, 假如棧頂操作符的優先級大於 等於當前操作符的優先級, 那么彈出棧頂操作符, 持續彈出, 直到棧頂操作符優先級小於當前操作符優先級或棧為空. 最后將當前操作符入棧

3. 如果遇到右括號, 那么將棧頂操作符彈出, 持續彈出直到遇到左括號, 左括號彈出但不輸出

4. 表達式讀入完畢, 若棧不為空, 則持續彈出棧頂操作符, 直到棧為空

 

題目

1. 九度題目1019:簡單計算器

2. 九度題目1101:計算表達式

3. 九度題目1498:尋找表達式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM