![算術表達式求值朱亮_第1頁](http://file4.renrendoc.com/view/ad9192b5e00a1f76db02f60c5e6f3e91/ad9192b5e00a1f76db02f60c5e6f3e911.gif)
![算術表達式求值朱亮_第2頁](http://file4.renrendoc.com/view/ad9192b5e00a1f76db02f60c5e6f3e91/ad9192b5e00a1f76db02f60c5e6f3e912.gif)
![算術表達式求值朱亮_第3頁](http://file4.renrendoc.com/view/ad9192b5e00a1f76db02f60c5e6f3e91/ad9192b5e00a1f76db02f60c5e6f3e913.gif)
![算術表達式求值朱亮_第4頁](http://file4.renrendoc.com/view/ad9192b5e00a1f76db02f60c5e6f3e91/ad9192b5e00a1f76db02f60c5e6f3e914.gif)
![算術表達式求值朱亮_第5頁](http://file4.renrendoc.com/view/ad9192b5e00a1f76db02f60c5e6f3e91/ad9192b5e00a1f76db02f60c5e6f3e915.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 算術表達式求值算法解析 2007級4班 2009年11月25日1 棧的應用算術表達式求值 表達式求值是程序設計語言編譯中的一個最基本問題。它的實現(xiàn)方法是棧的一個典型的應用實例。 表達式都是由操作數(shù)(operand)、運算符(operator)和界限符(delimiter)組成的。其中操作數(shù)可以是常數(shù),也可以是變量或常量的標識符;運算符是算術運算符( + , - , * , / );界限符為左右括號和標識表達式結束的結束符。2算術表達式的表示方法1. 中綴表達式運算符在操作數(shù)之間如: A * B / C 運算規(guī)則:(1) 先計算括號內,后計算括號外;(2) 在無括號或同層括號內,先進行乘除運算
2、,后進行加減運算,即乘除運算的優(yōu)先級高于加減運算的優(yōu)先級;(3) 同一優(yōu)先級運算,從左向右依次進行。3用計算機來處理中綴表達式比較復雜。一個中綴表達式中有多少個運算符,原則上就得對表達式掃描多少遍,才能完成計算。在編譯系統(tǒng)中,把中綴表達式轉換成另外一種表示方法,即后綴表達式,然后對后綴式表達式進行處理,后綴表達式也稱為逆波蘭式。 4 2. 后綴表達式: 1929 年,由波蘭邏輯學家(Lukasiewicz)提出。例 A * B / C; A B * C / ; 定義:運算符緊跟在兩個操作數(shù)之后的表達式叫后綴 表達式。 優(yōu)點: 后綴表達式沒有括號 不存在優(yōu)先級的差別 計算過程完全按照運算符出現(xiàn)的
3、先后次序 進行 5 后綴表達式求值的方法: 從左到右讀入后綴表達式,若讀到的是操作 數(shù),將它壓入堆棧。 若讀到的是運算符,就從堆棧中連續(xù)彈出兩 個元素,進行相應的運算,并將結果壓入棧 中。 讀入結束符時,棧頂元素就是計算結果。6 中綴表達式 后綴表達式 a+b a b+ a+b*c a b c *+ a*b*c+c*d a b * c * c d * + (a+b)*(c-d)*e+f) a b + c d e * f + * 例 計算后綴表達式ABC*/DE*+AC*-; 7操作 后綴表達式 棧T2 =A/T1 T2 DE*+AC*- =; T2 DET3 =D*E T2T3 +AC*- =
4、; T2 T3 T4=T2+T3 T4AC*- =; T4ACT5 =A*C T4 T5 - =; T4 T5 T6 =T4- T5 =; T6T1=B*C AT1/DE*+AC*- =; AT1 ABC*/DE*+AC*- =; ABC8后綴表達式求值的ADL算法:算法EPE ( p, n )EPE1 初始化CREATS ( S ) .EPE2 表達式求值FOR i=1 TO n DO IF NOT ( ISOPTOR( P i ) THEN S P i ELSE ( y S . x S. S APPLIED(P i , x , y) ) 9中綴表達式轉換成后綴表達式首先設定一個運算符棧,用
5、來保存掃描中綴表達式得到的暫不能放入后綴表達式中的運算符?;舅枷耄簭淖蟮接乙来巫x出中綴表達式中的各個符號(操作數(shù)或運算符),每讀出一個符號后,根據(jù)如下運算規(guī)則進行處理:1. 假如是操作數(shù),將其放入后綴表達式中;2. 如果是運算符,則: (1) ??眨哼\算符放入棧中, (2) 棧不空:比較當前讀到的運算符與棧頂運算符的優(yōu)先級10 1)假如讀出的運算符的優(yōu)先級大于棧頂運算符的優(yōu)先級,則將其壓入運算符棧,讀中綴表達式的下一個符號。 2)若棧頂運算符的優(yōu)先級比讀到的運算符的優(yōu)先級高或二者相等,彈出棧頂運算符放入后綴表達式中,當前讀到的運算符入棧; 3)遇到“(”,壓入堆棧; 4)遇到“)”,把“(”上面的操作符依次彈出加到后綴表達式中,“(”出棧; 3. 假如讀出的是表達式結束符“#”,棧中剩余的運算符依次出棧并寫入到后綴表達式中,轉換完成。11將(A+B)*(C-D)*E+F)轉換成后綴表達式 AB+CD-E*F+*12(A+B)*(C-D)*E+F)棧 輸出序列 ( A ( A B A B *( A B C *(- A B CD *( A B CD- *(* A B CD- E *( A B CD- E* *( A B CD- E*F * A B CD- E*F+ A B CD- E*F+ *13
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年別墅建設合同范例
- 2025年農村道路安全改善工程合同
- 2025年企業(yè)食堂經營承包合同
- 2025年二手車交易雙方性權益保障協(xié)議書
- 2025年醫(yī)療康復人才交流策劃協(xié)議
- 2025年交通供電檢測裝備項目申請報告
- 2025年二手房產交易合同額外補充協(xié)議
- 2025年海洋臺站儀器項目提案報告
- 2025年度學生權益保障協(xié)議書
- 2025年太陽能熱電站交易合同模板
- 有限空間作業(yè)審批表
- 內地居民前往香港或者澳門定居申請表
- (完整版)園藝產品貯藏與加工
- 學前教育大專畢業(yè)論文3000字
- 骨骼肌-人體解剖學-運動系統(tǒng)
- 高中體育與健康-足球踢墻式“二過一”戰(zhàn)術教學課件設計
- 兒童財商養(yǎng)成教育講座PPT
- 前庭性偏頭痛診斷
- 三下《動物的一生》教材解讀
- 神木市孫家岔鎮(zhèn)神能乾安煤礦礦山地質環(huán)境保護與土地復墾方案
- 那些活了很久很久的樹
評論
0/150
提交評論