![數(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),請進行舉報或認領(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時,棧空return 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至2030中國腳輪上的IV桿行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國胃腸心電圖儀行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國聚苯硫醚行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國考勤機行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國網(wǎng)絡(luò)零售行業(yè)營銷渠道及投資價值評估研究報告
- 2025至2030中國織帶切割機行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 影響中國歷史的名人學(xué)習(xí)考試題庫含答案(C卷)
- 六年級蘇教版數(shù)學(xué)單元教學(xué)計劃
- 2025至2030隔離系統(tǒng)行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030高清乳腺斷層攝影合成行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025年廣州市中考物理試題(含答案)
- 2024年漳州市常山開發(fā)區(qū)招聘筆試真題
- 2024年09月年中國農(nóng)業(yè)發(fā)展銀行江蘇省分行秋季校園招聘(86人)筆試歷年參考題庫附帶答案詳解
- 2025年第十屆“學(xué)憲法、講憲法”網(wǎng)絡(luò)知識競賽題庫(含答案)
- GB 30439.1-2013工業(yè)自動化產(chǎn)品安全要求第1部分:總則
- GA/T 1441-2017法庭科學(xué)同版印刷鑒定意見規(guī)范
- 氣缸的檢測課件
- DB37T 536-2019 文書檔案目錄數(shù)據(jù)采集規(guī)范
- (完整版)GB2893-2008-安全色
- 高一新生入學(xué)分班考試語文試卷含答案
- 格拉辛紙項目投資價值分析報告【參考模板】
評論
0/150
提交評論