棧的應(yīng)用之表達(dá)式求值

棧的應(yīng)用之表達(dá)式求值

ID:46449732

大?。?41.43 KB

頁數(shù):7頁

時間:2019-11-23

棧的應(yīng)用之表達(dá)式求值_第1頁
棧的應(yīng)用之表達(dá)式求值_第2頁
棧的應(yīng)用之表達(dá)式求值_第3頁
棧的應(yīng)用之表達(dá)式求值_第4頁
棧的應(yīng)用之表達(dá)式求值_第5頁
資源描述:

《棧的應(yīng)用之表達(dá)式求值》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、學(xué)生實驗報告學(xué)院:軟件與通信工程學(xué)院課程名稱:數(shù)據(jù)結(jié)構(gòu)專業(yè)班級:電信141班姓名:學(xué)號:014學(xué)生實驗報告(1)學(xué)生姓名學(xué)號同組人:無實驗項目棧的應(yīng)用之表達(dá)式求值■必修□選修□演示性實驗□驗證性實驗■操作性實驗□綜合性實驗實驗地點(diǎn)H113實驗儀器臺號指導(dǎo)教師黃淑英實驗日期及節(jié)次一、實驗綜述1、實驗?zāi)康募耙笳莆諚T诒磉_(dá)式求值算法中的應(yīng)用。2、實驗儀器、設(shè)備或軟件電腦二、實驗過程(實驗步驟、記錄、數(shù)據(jù)、分析)打開電腦,打開MicrosoftvisualC++6.0、新建、Win32ConosleApplication建一個空工程文件、選擇源文件、開始編寫程序

2、#include#include#include#include#include#include#include#include#includeconstcharoper[7]={'+','-','*','/','(',')','='};//建立一個一維數(shù)組放置運(yùn)算符#defineMAXSIZE100#defineOK1#defineERROR0#defineOVERFLOW-2ty

3、pedefintStatus;typedefcharSElemType;typedefstructStackNode//創(chuàng)建一個單鏈表{Statusdata;structStackNode*next;}StackNode,*LinkStack;StatusInitStack(LinkStack&S)//初始化{S=NULL;returnOK;}StatusStackEmpty(LinkStackS){if(!S)returntrue;returnfalse;}StatusPush(LinkStack&S,SElemTypee)//入棧{StackNode*

4、p;p=newStackNode;if(!p)returnOVERFLOW;p->data=e;p->next=S;S=p;returnOK;}StatusPop(LinkStack&S,SElemType&e)//出棧{StackNode*p;if(S==NULL)returnERROR;e=S->data;p=S;S=S->next;deletep;returnOK;}SElemTypeGetTop(LinkStackS)//取棧頂元素{if(S!=NULL)returnS->data;}StatusIn(charch)//判斷ch是否為運(yùn)算符{for

5、(inti=0;i<7;i++){if(ch==oper[i])returntrue;}returnfalse;}//判斷運(yùn)算符優(yōu)先級charPrecede(chartheta1,chartheta2){if((theta1=='('&&theta2==')')

6、

7、(theta1=='='&&theta2=='='))return'=';elseif(theta1=='('

8、

9、theta1=='='

10、

11、theta2=='('

12、

13、(theta1=='+'

14、

15、theta1=='-')&&(theta2=='*'

16、

17、theta2=='/'))return'<';

18、elsereturn'>';}charOperate(charfirst,chartheta,charsecond)//計算兩數(shù)運(yùn)算結(jié)果{switch(theta){case'+':return(first-'0')+(second-'0')+48;case'-':return(first-'0')-(second-'0')+48;case'*':return(first-'0')*(second-'0')+48;case'/':return(first-'0')/(second-'0')+48;}return0;}//算術(shù)表達(dá)式求值的算符優(yōu)先算法//設(shè)O

19、PTR和OPND分別為運(yùn)算符棧和操作數(shù)棧charEvaluateExpression(){charch;SElemTypea,b,theta,x;LinkStackOPND,OPTR;InitStack(OPND);InitStack(OPTR);Push(OPTR,'=');cin>>ch;while(ch!='='

20、

21、GetTop(OPTR)!='='){if(!In(ch)){Push(OPND,ch);cin>>ch;}elseswitch(Precede(GetTop(OPTR),ch)){case'<':Push(OPTR,ch);cin>>c

22、h;break;case'>':Pop(OPTR,theta);P

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。