版權(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.
3、strstacks.top;/將棧頂元素賦予字符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(
4、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(P
5、op(s)!='') return 0; break; case '': if(Pop(s)!='') return 0; break; int re=0; /定義并初始化判空函數(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)試記錄及收獲在
6、運行程序時,當(dāng)輸入1+(2+3)時,因為錯把(寫成(,也就是輸入法的中英文沒有切換,所以得到的結(jié)果是錯的。這就說明輸入時要注意中英文。通過本次實驗,我對棧的使用更加熟練,入棧出棧的順序也有了更一步的了解。附:源代碼#include "stdafx.h"#include<iostream> #include<stdio.h> #include<string.h>using namespace std; #define stacksize 100 /定義棧的空間大小structstack /定義棧的結(jié)構(gòu)體char strstackstacks
7、ize;/定義棧的存儲格式為字符型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 +;/入棧操作一次,棧頂+1 s.strstacks.top = a;/此時,棧頂元素為字符a return a; char Pop(stack &s ) /出棧操作if(s.top = -1)
8、 /當(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) /檢驗括號是否匹配的函數(shù)stack s; InitStack(s); int strn = strlen(str); /定義字符串長度為strn for(int i=0;i
9、<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
10、; 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 str100; /定義一個單字符型數(shù)組以儲存鍵盤輸入的字符串。cout<<"請輸入一個長度小于100的字符串:"<<
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年柳州市柳鐵中心醫(yī)院柳州市第三人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年05月廣東廣發(fā)銀行江門分行實習(xí)生招考筆試歷年參考題庫附帶答案詳解
- 2024年林芝地區(qū)婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年杭州市江干區(qū)九堡醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 《投資管理新》課件
- 2024年滬教版五年級數(shù)學(xué)下冊階段測試試卷
- 2025年滬教版八年級物理上冊階段測試試卷
- 2024年05月上海/廣東2024屆平安銀行總行橙光培訓(xùn)生技術(shù)類校園招考筆試歷年參考題庫附帶答案詳解
- 2024年粵教版八年級數(shù)學(xué)上冊階段測試試卷含答案
- 2025年湘教版九年級科學(xué)上冊階段測試試卷
- 交換機安裝調(diào)試記錄表實用文檔
- 理性思維作文素材800字(通用范文5篇)
- 口腔頜面外科學(xué) 09顳下頜關(guān)節(jié)疾病
- 應(yīng)急物資清單明細(xì)表
- 房地產(chǎn)估計第八章成本法練習(xí)題參考
- 《社會主義核心價值觀》優(yōu)秀課件
- 《妊娠期糖尿病患者個案護理體會(論文)3500字》
- 《小學(xué)生錯別字原因及對策研究(論文)》
- 便攜式氣體檢測報警儀管理制度
- 酒店安全的管理制度
- (大潔王)化學(xué)品安全技術(shù)說明書
評論
0/150
提交評論