


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上5 將中綴表達式轉(zhuǎn)換為后綴表達式【問題描述】表達式轉(zhuǎn)換。輸入的中綴表達式為字符串,轉(zhuǎn)換得到的后綴表達式存入字符數(shù)組中并輸出。例如: a*(x+y)/(b-x) 轉(zhuǎn)換后得: a x y + * b x - /【數(shù)據(jù)結(jié)構(gòu)】l 定義一個暫時存放運算符的轉(zhuǎn)換工作棧opst。l 中綴表達式字符串char *infix;l 后綴表達式字符串char *postfix;【算法提示】轉(zhuǎn)換規(guī)則:把運算符移到它的兩個操作數(shù)后面,刪除掉所有的括號。從頭到尾掃描中綴表達式,對不同類型的字符按不同情況處理:l 數(shù)字或小數(shù)點,直接寫入字符串postfix,并在每個數(shù)值后面寫入一個空格;l 左括號
2、,進棧,直到遇見相配的右括號,才出棧;l 右括號,表明已掃描過括號內(nèi)的中綴表達式,把從棧頂直到對應(yīng)左括號之間的運算符依次退棧,并把結(jié)果推入棧內(nèi);l 對于運算符,分兩種情況處理:u 該運算符的優(yōu)先級大于棧頂符號的優(yōu)先級,則入棧;u 若該運算符的優(yōu)先級小于棧頂優(yōu)先級,則先彈出棧頂運算符、寫入postfix串;繼續(xù)將該運算符與棧頂運算符比較,直到能把它推入棧內(nèi)為止(即優(yōu)先級大于棧頂運算符)。說明:自行設(shè)計運算符優(yōu)先級的表示?!局饕a】專心-專注-專業(yè)#include<iostream.h>#include<assert.h>#include<math.h>#in
3、clude<string.h>const int stackIncreament=0;class opstpublic: opst(int sz=50) maxSize=sz; top=-1; elements=new charmaxSize; assert(elements!=NULL); opst()deleteelements; bool IsEmpty()return (top=-1)?true:false; bool IsFull()return (top=maxSize-1)?true:false; void Push( char &x); bool Pop(c
4、har &x); bool getTop(char &x); int getSize()constreturn top+1; void MakeEmpty()top=-1; void input(); void Convert(); friend ostream& operator<<(ostream &os,opst &s);private: char *elements; int top; int maxSize; void overflowProcess();void opst:overflowProcess()/溢出處理 char *
5、newArray=new charmaxSize+stackIncreament; for(int i=0;i<=top;i+) newArrayi=elementsi; maxSize=maxSize+stackIncreament; delete elements; elements=newArray;void opst:Push(char &x)if(IsFull()=true) overflowProcess();elements+top=x;bool opst:Pop( char &x) if(IsEmpty()=true) return false; x=el
6、ementstop-; return true;bool opst:getTop(char &x) if(IsEmpty()=true)return false; x=elementstop; return true;ostream& operator<<(ostream &os,opst &s) os<<"top="<<s.top<<endl; for(int i=0;i<=s.top;i+) os<<s.elementsi; return os;void opst:inpu
7、t() char ch20; cout<<"請輸入中綴表達式(括號不能省略):"<<endl; cin.getline(ch,20); int i=0; while(chi!='0') this->Push(chi);i+; chi='#'bool isdigit(char &x) if(x>='a'&&x<='z')|(x>='A'&&x<='Z')|(x>='0'
8、;&&x<='9') return true; else return false;int isp(char &x)/設(shè)置棧內(nèi)優(yōu)先級 switch(x) case '#': return 0;break; case '(': return 1;break; case '*': case '/': case '%': return 5;break; case '+': case '-': return 3;break; case '
9、)': return 6;break; int icp(char &x)/設(shè)置棧外優(yōu)先級 switch(x) case '#': return 0;break; case '(': return 6;break; case '*': case '/': case '%': return 4;break; case '+': case '-': return 2;break; case ')': return 1;break; void opst:Con
10、vert() opst s; int i=0; char ch='#',ch1,op; s.Push(ch); this->Push(ch); elementsi; while(this->IsEmpty()=false&&elementsi!='#') if(isdigit(elementsi) cout<<elementsi; i+; else s.getTop(ch1); if(isp(ch1)<icp(elementsi) s.Push(elementsi);i+; else if(isp(ch1)>icp(elementsi) s.Pop(op);cout<<op; else s.Pop(op); if(op='(') i+; void main() opst a; a.input(); cout<<"后綴表達式為:"<<endl; a.Convert(); cout<<endl;【實驗過程】請輸入中綴表達式(括號不能省略):(a+(b-c)/d)后綴表達式為:abc-d/+【實驗體會】怎么樣設(shè)置棧內(nèi)外的優(yōu)先級是解決這
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福州實驗室凈化室施工方案
- 科學教育在校園的多元化實踐
- 平?jīng)龌又ёo工程施工方案
- 銅山公園塑膠跑道施工方案
- 朔州防靜電地板磚施工方案
- 長春高空煙囪防腐施工方案
- 廈門理工學院《植物檢疫》2023-2024學年第二學期期末試卷
- 南陽農(nóng)業(yè)職業(yè)學院《項目管理與決策》2023-2024學年第二學期期末試卷
- 延邊大學《國際人力資源管理英》2023-2024學年第二學期期末試卷
- 長春師范大學《深度學習原理及應(yīng)用》2023-2024學年第二學期期末試卷
- 教科版 二年級下冊科學教學計劃
- 中國膿毒癥及膿毒性休克急診治療指南
- 部編版六年級道德與法治下冊《學會反思》教案
- 人教版體育與健康四年級-《障礙跑》教學設(shè)計
- DB32-T 2860-2015散裝液體化學品槽車裝卸安全作業(yè)規(guī)范-(高清現(xiàn)行)
- 部編版四年級下冊語文教案(完整)
- T∕CIS 71001-2021 化工安全儀表系統(tǒng)安全要求規(guī)格書編制導則
- 福利院裝修改造工程施工組織設(shè)計(225頁)
- 環(huán)境空氣中臭氧的測定
- 第七章 化學物質(zhì)與酶的相互作用
- 機械畢業(yè)設(shè)計論文鋼筋自動折彎機的結(jié)構(gòu)設(shè)計全套圖紙
評論
0/150
提交評論