




全文預覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程實驗指導書逆波蘭表達式求值一、需求分析1、從鍵盤中輸入一個后綴表達式,該表示包括加減乘除等操作符,以及正整數(shù)作為操作數(shù)等。2、用堆棧來實現(xiàn)3、測試數(shù)據(jù)輸入:2 3 * 1 #輸出:2 3 * 1 - =5二、概要設計抽象數(shù)據(jù)類型需要一個浮點數(shù)棧來存儲還沒有計算的浮點數(shù)或者運算的結(jié)果。ADT Stack數(shù)據(jù)成員:int size; int top; /分別用于存儲棧大小、棧頂位置float *listArray;/存儲浮點型數(shù)字的數(shù)組成員函數(shù):bool push(float it);bool pop(float& it);bool isEmpty(); /判斷棧為空bool isOne();/判斷棧是否只有一個元素算法的基本思想1. 逐一掃描字符串,用ascii碼進行判斷,如果該字符是數(shù)字,則利用x=x*10+stri-48將數(shù)據(jù)由字符類型轉(zhuǎn)換為浮點型數(shù)據(jù);2. 如果字符是.,則將.轉(zhuǎn)化為小數(shù)點,并將.后的數(shù)據(jù)轉(zhuǎn)化為小數(shù)部分;3. 遇到空格前是數(shù)據(jù)的,將x押入棧;4. 如果該字符是+,-,*或/,判斷棧里的元素是否少于兩個個,如果少于兩個,報錯;如果大于等于兩個,就彈出兩個數(shù)據(jù),并進行相應的計算;程序的流程輸入字符串,程序?qū)ψ址来螔呙?。掃描一位,處理一位。掃描完成后,判斷棧里是不是只有一個數(shù)據(jù),若是,得到正確結(jié)果;若不是,則表達式出錯。三、詳細設計物理數(shù)據(jù)類型用浮點數(shù)類型的棧存儲運算中要用的數(shù)據(jù),需要入棧、出棧,故設計如下的浮點類型的棧:class Stackprivate:int size;int top;float *listArray;public:Stack(int sz=20);Stack();bool push(float it);/入棧bool pop(float& it);/出棧bool isEmpty();/判斷棧是否為空bool isOne(); /判斷棧里是否只有且僅有一個元素;成員函數(shù)的函數(shù)體 5 Stack:Stack(int sz) /棧構(gòu)造函數(shù)size=sz;top=0;listArray=new floatsize;bool Stack:push(float it)if(top=size)return false;listArraytop+=it;return true;bool Stack:pop(float& it)if(top=0)return false;it=listArray-top;return true;bool Stack:isEmpty() /判斷站是否為空if(top=0)return true;return false;bool Stack:isOne()if(top=1)return true;return false;Stack:Stack()delete listArray;算法的具體步驟用switch語句實現(xiàn)1. 逐一掃描字符串,用ascii碼進行判斷,如果該字符是數(shù)字,則利用x=x*10+stri-48將數(shù)據(jù)由字符類型轉(zhuǎn)換為浮點型數(shù)據(jù);2. 如果字符是.,則將.轉(zhuǎn)化為小數(shù)點,并將.后的數(shù)據(jù)轉(zhuǎn)化為小數(shù)部分;3. 遇到空格前是數(shù)據(jù)的,將x押入棧;4. 如果該字符是+,-,*或/,判斷棧里的元素是否少于兩個個,如果少于兩個,報錯;如果大于等于兩個,就彈出兩個數(shù)據(jù),并進行相應的計算;算法的時空分析因為入棧、出棧的時間復雜度均為(1),所以時間的復雜度主要取決于字符串的長度,空間也同樣取決于字符串長度。時間復雜度為(n)。輸入和輸出的格式輸入:2 3 * 1 #輸出:2 3 * 1 - =5五、測試結(jié)果六、用戶使用說明(可選)1. 運行程序后,直接輸入后綴表達式;2. 用戶輸入的表達式必須符合后綴表達式的要求,并以#號結(jié)束。七、附錄(可選)#include #include using namespace std;class Stackprivate:int size;int top;float *listArray;public:Stack(int sz=20);Stack();bool push(float it);/入棧bool pop(float& it);/出棧bool isEmpty();/判斷棧是否為空bool isOne();/判斷棧里是否一個元素;Stack:Stack(int sz) /棧構(gòu)造函數(shù)size=sz;top=0;listArray=new floatsize;bool Stack:push(float it)if(top=size)return false;listArraytop+=it;return true;bool Stack:pop(float& it)if(top=0)return false;it=listArray-top;return true;bool Stack:isEmpty() /判斷站是否為空if(top=0)return true;return false;bool Stack:isOne()if(top=1)return true;return false;Stack:Stack()delete listArray;/此函數(shù)傳進輸入的字符串,并對字符串進/行掃描并進行相應處理,得到結(jié)果(函數(shù)聲/明)void compute(char* str); int main()char str20;cin.getline(str,20,#);compute(str);return 0;/此函數(shù)傳進輸入的字符串,并對字符串進/行掃描并進行相應處理,得到結(jié)果(函數(shù)體)void compute(char* str)Stack aStack;float x=0,y=0,s1,s2,temp;int i;i=0;while(stri)switch(stri)case +: /加法運算if(aStack.isOne()|aStack.isEmpty() cout 表達式不符合要求;return;aStack.pop(s1);aStack.pop(s2);x=s2+s1;aStack.push(x);x=0;i+;break;case -: /減法運算if(aStack.isOne()|aStack.isEmpty()cout 表達式不符合要求;return;aStack.pop(s1); aStack.pop(s2);x=s2-s1; aStack.push(x);x=0; i+;break;case *: /乘法運算if(aStack.isOne()|aStack.isEmpty()cout 表達式不符合要求;return;aStack.pop(s1); aStack.pop(s2);x=s2*s1;aStack.push(x);x=0;i+;break;case /: /除法運算if(aStack.isOne()|aStack.isEmpty()cout 表達式不符合要求;return;aStack.pop(s1);a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子產(chǎn)品檢測技術(shù)專業(yè)教學標準(高等職業(yè)教育??疲?025修訂
- 2024-2025學年吉林省通化市梅河口五中高二下學期4月月考英語試題及答案
- 智能交通技術(shù)專業(yè)教學標準(高等職業(yè)教育??疲?025修訂
- 2025年中國卷巾紙巾行業(yè)市場全景分析及前景機遇研判報告
- 稅務師考試東奧課件下載
- 稅務師考試2021課件
- 2025年中國站式減壓器行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 中國潔凈環(huán)境測試儀組合套件儀器箱行業(yè)市場調(diào)查研究及投資前景展望報告
- 智能控制器培訓課件
- 2025年中國電子書閱讀器行業(yè)市場調(diào)研分析及投資前景預測報告
- 自主招生試題及答案網(wǎng)
- 2025年高考江蘇卷物理真題(解析版)
- 2025年重慶市中考化學試卷真題(含標準答案)
- 2024年北京市初中學業(yè)水平考試語文試卷及答案
- 電力行業(yè)電力運行維護與故障處理知識題庫
- 科學技術(shù)普及法解讀
- 西山煤電招聘筆試題庫2025
- 醫(yī)院院感每月培訓管理規(guī)范
- T-SCSTA001-2025《四川省好住房評價標準》
- 廣西常見中草藥知到智慧樹期末考試答案題庫2025年廣西中醫(yī)藥大學
- 嶺南建筑介紹課件
評論
0/150
提交評論