版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算- 1 -數(shù)據(jù)結(jié)構(gòu)(雙語) 數(shù)據(jù)結(jié)構(gòu)(雙語)——項(xiàng)目文檔報(bào)告 項(xiàng)目文檔報(bào)告用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算 用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算專 業(yè): 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)應(yīng)用 計(jì)算機(jī)科學(xué)與技術(shù)應(yīng)用 班 級: 級: 指導(dǎo)教師: 指導(dǎo)教師: 吳亞峰 吳亞峰 姓 名: 名:
2、學(xué) 號: 號: 用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算- 3 -一、設(shè)計(jì)思想 一、設(shè)計(jì)思想A: 中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式的設(shè)計(jì)思想:我們借助計(jì)算機(jī)計(jì)算一個(gè)算數(shù)表達(dá)式的值,而在計(jì)算機(jī)中,算術(shù)表達(dá)式是由常量,變量,運(yùn)算符和括號組成。由于運(yùn)算符的優(yōu)先級不同又要考慮括號。所以表達(dá)式不可能嚴(yán)格的從左到右進(jìn)行,因此我們借助棧和數(shù)組來實(shí)現(xiàn)表達(dá)式的求值。棧分別用來存儲操作數(shù)和運(yùn)算符。在計(jì)算表達(dá)式的值之前,首先要把有括號的表
3、達(dá)式轉(zhuǎn)換成與其等值的無括號的表達(dá)式,也就是通常說的中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式。在這個(gè)過程中,要設(shè)計(jì)兩個(gè)棧,一個(gè)浮點(diǎn)型的存儲操作數(shù),用以對無符號的表達(dá)式進(jìn)行求值。另一個(gè)字符型的用來存儲運(yùn)算符,用以將算術(shù)表達(dá)式變成無括號的表達(dá)式;我們要假設(shè)運(yùn)算符的優(yōu)先級:( ) , * /, + - 。首先將一標(biāo)識號‘#’入棧,作為棧底元素;接著從左到右對算術(shù)表達(dá)式進(jìn)行掃描。每次讀一個(gè)字符,若遇到左括號‘(’ ,則進(jìn)棧;若遇到的是操作數(shù),則立即輸出;若又遇到
4、運(yùn)算符,如果它的優(yōu)先級比棧頂元素的優(yōu)先級數(shù)高的話,則直接進(jìn)棧,否則輸出棧頂元素,直到新的棧頂元素的優(yōu)先級數(shù)比它低的,然后將它壓棧;若遇到是右括號‘) ’ ,則將棧頂?shù)倪\(yùn)算符輸出,直到棧頂?shù)脑貫椤ā?,然后,左右括號互相底消;如果我們設(shè)計(jì)掃描到‘#’的時(shí)候表示表達(dá)式已經(jīng)掃描完畢,表達(dá)式已經(jīng)全部輸入,將棧中的運(yùn)算符全部輸出,刪除棧底的標(biāo)識號。以上完成了中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式,輸出無括號的表達(dá)式,若遇數(shù)值,操作數(shù)進(jìn)棧;若遇運(yùn)算符,讓操作數(shù)
5、棧的棧頂和次棧頂依次出棧并與此運(yùn)算符進(jìn)行運(yùn)算,運(yùn)算結(jié)果入操作數(shù)棧;重復(fù)以上的步驟,直到遇到‘#’ ,則此時(shí)棧中的結(jié)果便是所求的后綴表達(dá)式的值,接著輸出結(jié)果。以上就是設(shè)計(jì)這個(gè)算法的主要的思想。設(shè)計(jì)思想的流程圖詳見圖 A;B: 直接計(jì)算表達(dá)式的值。所謂的掃一遍就是當(dāng)掃完一個(gè)表達(dá)式結(jié)果也就計(jì)算出來了,是在上面掃兩遍的思想進(jìn)行修改的得來,首先,我們要建立兩個(gè)棧,一個(gè)為字符型的用來存放運(yùn)算符,另一個(gè)浮點(diǎn)型的用來存放操作數(shù)。我們開始對表達(dá)式進(jìn)行掃描
6、,首先我們要假設(shè)運(yùn)算符的優(yōu)先級:( ) , * /, + - 。如果掃描到的是數(shù)字符號,把它們轉(zhuǎn)換成浮點(diǎn)型數(shù)據(jù),存入操作數(shù)棧中。如果掃描到的是運(yùn)算符號,第一個(gè)運(yùn)算符進(jìn)棧,遇到‘(’存入運(yùn)算符棧中,我們按照第一種算法的方法將表達(dá)式依次掃描。只不過不同的是,當(dāng)每取得的一個(gè)運(yùn)算符的時(shí)候,都要與棧頂?shù)倪\(yùn)算符進(jìn)行比較,如果它的優(yōu)先級小于棧頂運(yùn)算符優(yōu)先級時(shí),取出棧頂運(yùn)算符并從操作數(shù)棧中取棧頂兩個(gè)數(shù)進(jìn)行運(yùn)算,得到的結(jié)果則要存回操作數(shù)棧,就這樣邊掃描
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---用兩種方式實(shí)現(xiàn)表達(dá)式自動計(jì)算
- 用優(yōu)先函數(shù)實(shí)現(xiàn)對表達(dá)式的運(yùn)算
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- 利用棧實(shí)現(xiàn)表達(dá)式求值
- c++課程設(shè)計(jì)---中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式的實(shí)現(xiàn)
- el表達(dá)式
- 最右推導(dǎo)1〈表達(dá)式〉〈表達(dá)式〉〈運(yùn)算符〉
- 正規(guī)表達(dá)式和有窮自動機(jī)
- 正規(guī)表達(dá)式和有窮自動機(jī)
- 正則表達(dá)式
- 算術(shù)表達(dá)式的計(jì)算課程設(shè)計(jì)
- 檢索表達(dá)式構(gòu)建
- 化學(xué)表達(dá)式2
- 兩種郵寄方式
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(表達(dá)式計(jì)算)
- el表達(dá)式的介紹
- 強(qiáng)制結(jié)束進(jìn)程的兩種實(shí)現(xiàn)方式
- 初中化學(xué)化學(xué)反應(yīng)文字表達(dá)式、符號表達(dá)式、文字表達(dá)式加符號及現(xiàn)象
評論
0/150
提交評論