![數(shù)據(jù)結(jié)構(gòu)實驗表達式括號匹配配對判斷問題[共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)實驗表達式括號匹配配對判斷問題[共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)實驗表達式括號匹配配對判斷問題[共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)實驗表達式括號匹配配對判斷問題[共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)實驗表達式括號匹配配對判斷問題[共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),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗 表達式括號匹配配對判斷問題 姓名: 班級: 學(xué)號: 實驗時間:1. 問題描述一個算術(shù)表達式含圓括號、中括號、花括號,且它們可任意嵌套使用。寫一程序,判斷任一算術(shù)表達式中所含括號是否正確配對。2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計匹配判別發(fā)生在右括號出現(xiàn)時,且被匹配的左括號應(yīng)是距離右括號最近被輸入的,二不是最先被輸入的括號,即“先入后匹配”。因此用棧來解決。#define stacksize 100 /定義棧的空間大小structstack /定義棧的結(jié)構(gòu)體char strstackstacksize;/定義棧的存儲格式為字符型int top; /定義棧的棧頂變量; void InitStack(stack
2、&s)/定義一個新棧s,初始化棧頂為-1 s.top = -1; 3. 算法設(shè)計(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;/此時,棧頂元素為字符a return a; (2)出棧的算法設(shè)計char Pop(stack &s ) /出棧操作if(s.top = -1) /當(dāng)棧頂為-1時,??誶eturn 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;/棧為空時返回值為1else return 0;/棧不為空時返回值為0 (4)判斷是否匹配的算法。如果右括號,進棧,取下個字符;如果是左括號,出棧,取下個字符;最后判斷棧是否為空。int Check(char* str) /檢驗括號是否匹配的函數(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進行判斷case (: case : case : Push(s,a);/若是左括號,則進行入棧操作break; /若是右括號,則進行出棧操作,若出棧元素不是與輸入相對應(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. 運行與測試輸入1+(2+3)輸入1+(2+3)輸入1+(2+3)輸入1+2+3+4輸入1+2+(4-2)*25. 調(diào)試記錄及收獲在運行程序時,當(dāng)輸入1+(2+3)時,因為錯把(寫成(,也就是輸入法的中英文沒有切換,所以得到的結(jié)果是錯的。這就說明輸入時要注意中英文。通過本次實驗,我對棧的使用更加熟練,入棧出棧的順序也有了更一步的了解。附:源代碼#include stdafx.h#include #includ
6、e #includeusing namespace std; #define stacksize 100 /定義棧的空間大小structstack /定義棧的結(jié)構(gòu)體char strstackstacksize;/定義棧的存儲格式為字符型int top; /定義棧的棧頂變量; void InitStack(stack &s)/定義一個新棧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;/此時,棧頂元素為字符a return a; char Pop(stack &s ) /出棧操作if(s.top = -1) /當(dāng)棧頂為-1時,??誶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;/棧為空時返回值為1else return 0;/棧不為空時返回值為0 int Check(char* str) /檢
8、驗括號是否匹配的函數(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進行判斷case (: case : case : Push(s,a);/若是左括號,則進行入棧操作break; /若是右括號,則進行出棧操作,若出棧元素不是與輸入相對應(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年元宇宙社交平臺虛擬社交游戲化體驗優(yōu)化與發(fā)展報告
- 2025年醫(yī)院信息化建設(shè)初步設(shè)計評估關(guān)注醫(yī)院信息互聯(lián)互通報告
- 工業(yè)互聯(lián)網(wǎng)平臺網(wǎng)絡(luò)安全態(tài)勢感知技術(shù)安全監(jiān)測與預(yù)警2025年實踐報告
- 2025年醫(yī)藥市場風(fēng)險預(yù)警:仿制藥一致性評價政策影響分析報告001
- 2025年城市生活垃圾分類處理公眾參與行為分析及長效機制研究報告001
- 綠色建筑材料市場推廣策略與政策支持下的綠色金融產(chǎn)品創(chuàng)新報告
- 民辦教育機構(gòu)合規(guī)運營與品牌形象塑造策略2025年實戰(zhàn)案例研究報告
- 安全與生活試題及答案
- 數(shù)字藝術(shù)作品創(chuàng)作與版權(quán)保護市場調(diào)研報告
- 安全環(huán)保知識試題及答案
- 《大數(shù)據(jù)技術(shù)原理與應(yīng)用(第3版)》期末復(fù)習(xí)題庫(含答案)
- 閩2023-G-01先張法預(yù)應(yīng)力高強混凝土管樁DBJT13-95
- 2024 胃食管反流病指南共識:藥物治療
- 總承包管理技術(shù)方案
- 2024吉林省國資委出資企業(yè)招聘筆試參考題庫含答案解析
- JJG 164-2000液體流量標(biāo)準(zhǔn)裝置
- 光伏運維技能大賽考試題庫及答案
- 大學(xué)生實習(xí)實踐的職業(yè)素養(yǎng)與職業(yè)道德1
- JBT 14346-2023 建筑施工機械與設(shè)備 泥水平衡頂管機 (正式版)
- XXXX造價管理精講講義第五章工程項目投融資
- 李辛演講-現(xiàn)代人的壓力與管理
評論
0/150
提交評論