![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)表達(dá)式括號匹配配對判斷問題[共11頁]_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/a2767b77-d763-40c1-98c5-a3c7c7f477c2/a2767b77-d763-40c1-98c5-a3c7c7f477c21.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)表達(dá)式括號匹配配對判斷問題[共11頁]_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/a2767b77-d763-40c1-98c5-a3c7c7f477c2/a2767b77-d763-40c1-98c5-a3c7c7f477c22.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)表達(dá)式括號匹配配對判斷問題[共11頁]_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/a2767b77-d763-40c1-98c5-a3c7c7f477c2/a2767b77-d763-40c1-98c5-a3c7c7f477c23.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)表達(dá)式括號匹配配對判斷問題[共11頁]_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/a2767b77-d763-40c1-98c5-a3c7c7f477c2/a2767b77-d763-40c1-98c5-a3c7c7f477c24.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)表達(dá)式括號匹配配對判斷問題[共11頁]_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/a2767b77-d763-40c1-98c5-a3c7c7f477c2/a2767b77-d763-40c1-98c5-a3c7c7f477c25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn) 表達(dá)式括號匹配配對判斷問題 姓名: 班級: 學(xué)號: 實(shí)驗(yàn)時(shí)間:1. 問題描述一個(gè)算術(shù)表達(dá)式含圓括號、中括號、花括號,且它們可任意嵌套使用。寫一程序,判斷任一算術(shù)表達(dá)式中所含括號是否正確配對。2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)匹配判別發(fā)生在右括號出現(xiàn)時(shí),且被匹配的左括號應(yīng)是距離右括號最近被輸入的,二不是最先被輸入的括號,即“先入后匹配”。因此用棧來解決。#define stacksize 100 /定義棧的空間大小structstack /定義棧的結(jié)構(gòu)體char strstackstacksize;/定義棧的存儲(chǔ)格式為字符型int top; /定義棧的棧頂變量; void InitStack(stack
2、&s)/定義一個(gè)新棧s,初始化棧頂為-1 s.top = -1; 3. 算法設(shè)計(jì)(1)入棧的算法char Push(stack &s, char a) /入棧操作,將字符a入棧s if(s.top = stacksize - 1) /當(dāng)棧頂為棧的空間大小-1,棧滿return 0; s.top +;/入棧操作一次,棧頂+1 s.strstacks.top = a;/此時(shí),棧頂元素為字符a return a; (2)出棧的算法設(shè)計(jì)char Pop(stack &s ) /出棧操作if(s.top = -1) /當(dāng)棧頂為-1時(shí),棧空return 0; char a = s.strstacks.to
3、p;/將棧頂元素賦予字符a,并返回字符a,完成出棧操作s.top-; return a; (3)判斷棧是否為空的函數(shù)int Empty(stack &s,int re) /定義判斷棧是否為空的函數(shù)if(s.top=-1) return 1;/棧為空時(shí)返回值為1else return 0;/棧不為空時(shí)返回值為0 (4)判斷是否匹配的算法。如果右括號,進(jìn)棧,取下個(gè)字符;如果是左括號,出棧,取下個(gè)字符;最后判斷棧是否為空。int Check(char* str) /檢驗(yàn)括號是否匹配的函數(shù)stack s; InitStack(s); int strn = strlen(str); /定義字符串長度為s
4、trn for(int i=0;i strn;i+) char a=stri; int re=0; switch(a)/對輸入的字符a進(jìn)行判斷case (: case : case : Push(s,a);/若是左括號,則進(jìn)行入棧操作break; /若是右括號,則進(jìn)行出棧操作,若出棧元素不是與輸入相對應(yīng)的左括號,則字符串括號中不匹配,返回case ): if(Pop(s)!=() return 0; break; case : if(Pop(s)!=) return 0; break; case : if(Pop(s)!=) return 0; break; int re=0; /定義并初始化
5、判空函數(shù)的返回值re=Empty(s,re); /返回判空函數(shù)的返回值if(re=1) return 1; /棧為空elsereturn 0; /棧不為空,有左括號,存在(或或未匹配 4. 運(yùn)行與測試輸入1+(2+3)輸入1+(2+3)輸入1+(2+3)輸入1+2+3+4輸入1+2+(4-2)*25. 調(diào)試記錄及收獲在運(yùn)行程序時(shí),當(dāng)輸入1+(2+3)時(shí),因?yàn)殄e(cuò)把(寫成(,也就是輸入法的中英文沒有切換,所以得到的結(jié)果是錯(cuò)的。這就說明輸入時(shí)要注意中英文。通過本次實(shí)驗(yàn),我對棧的使用更加熟練,入棧出棧的順序也有了更一步的了解。附:源代碼#include stdafx.h#include #includ
6、e #includeusing namespace std; #define stacksize 100 /定義棧的空間大小structstack /定義棧的結(jié)構(gòu)體char strstackstacksize;/定義棧的存儲(chǔ)格式為字符型int top; /定義棧的棧頂變量; void InitStack(stack &s)/定義一個(gè)新棧s,初始化棧頂為-1 s.top = -1; char Push(stack &s, char a) /入棧操作,將字符a入棧s if(s.top = stacksize - 1) /當(dāng)棧頂為棧的空間大小-1,棧滿return 0; s.top +;/入棧操作一
7、次,棧頂+1 s.strstacks.top = a;/此時(shí),棧頂元素為字符a return a; char Pop(stack &s ) /出棧操作if(s.top = -1) /當(dāng)棧頂為-1時(shí),??誶eturn 0; char a = s.strstacks.top;/將棧頂元素賦予字符a,并返回字符a,完成出棧操作s.top-; return a; int Empty(stack &s,int re) /定義判斷棧是否為空的函數(shù)if(s.top=-1) return 1;/棧為空時(shí)返回值為1else return 0;/棧不為空時(shí)返回值為0 int Check(char* str) /檢
8、驗(yàn)括號是否匹配的函數(shù)stack s; InitStack(s); int strn = strlen(str); /定義字符串長度為strn for(int i=0;i strn;i+) char a=stri; int re=0; switch(a)/對輸入的字符a進(jìn)行判斷case (: case : case : Push(s,a);/若是左括號,則進(jìn)行入棧操作break; /若是右括號,則進(jìn)行出棧操作,若出棧元素不是與輸入相對應(yīng)的左括號,則字符串括號中不匹配,返回case ): if(Pop(s)!=() return 0; break; case : if(Pop(s)!=) retu
9、rn 0; break; case : if(Pop(s)!=) return 0; break; /*case ): if(Empty(s,re) | Pop(s) != () return 0; Pop(s); break; case : if(Empty(s,re) | Pop(s) != ) return 0; Pop(s); break; case : if(Empty(s,re) | Pop(s) != ) return 0; Pop(s); break;*/ int re=0; /定義并初始化判空函數(shù)的返回值re=Empty(s,re); /返回判空函數(shù)的返回值if(re=1) return 1; /棧為空elsereturn 0; /棧不為空,有左括號,即存在(或或未匹配 void main() /主函數(shù) char str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年低碳經(jīng)濟(jì)發(fā)展考試試題及答案動(dòng)態(tài)分析
- 校園運(yùn)動(dòng)會(huì)的一天記事文章(5篇)
- 難忘的班級集體活動(dòng)事件作文11篇
- 高中英語語法復(fù)習(xí)課教案:時(shí)態(tài)辨析與實(shí)踐運(yùn)用
- 2025年泡騰劑項(xiàng)目立項(xiàng)申請報(bào)告模板
- 我們一起游泳難忘的夏日時(shí)光作文(12篇)
- 2025年成人高考《語文》古詩詞文學(xué)性與藝術(shù)性試題庫
- 2025年春季小學(xué)五年級數(shù)學(xué)期末沖刺卷:數(shù)學(xué)思維拓展與訓(xùn)練
- 2025年電子商務(wù)師(中級)職業(yè)技能鑒定試卷:電商短視頻電商數(shù)據(jù)分析
- 2025年專升本藝術(shù)概論考試模擬卷(藝術(shù)審美心理與藝術(shù)史研究前沿課題)
- 2024吉林省國資委出資企業(yè)招聘筆試參考題庫含答案解析
- 2024山西航空產(chǎn)業(yè)集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- JJG 164-2000液體流量標(biāo)準(zhǔn)裝置
- 光伏運(yùn)維技能大賽考試題庫及答案
- 大學(xué)生實(shí)習(xí)實(shí)踐的職業(yè)素養(yǎng)與職業(yè)道德1
- JBT 14346-2023 建筑施工機(jī)械與設(shè)備 泥水平衡頂管機(jī) (正式版)
- XXXX造價(jià)管理精講講義第五章工程項(xiàng)目投融資
- 李辛演講-現(xiàn)代人的壓力與管理
- 2024屆遼寧省沈陽市沈河區(qū)物理八下期末考試試題含解析
- 激光先進(jìn)制造技術(shù) 課件 第3章 激光熔覆技術(shù)
- 醫(yī)院與商會(huì)合作協(xié)議
評論
0/150
提交評論