




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)_課程設(shè)計_括號匹配問題數(shù)據(jù)結(jié)構(gòu)_課程設(shè)計_括號匹配問題數(shù)據(jù)結(jié)構(gòu)_課程設(shè)計_括號匹配問題廣東工業(yè)大學(xué)華立學(xué)院課程設(shè)計課程名稱數(shù)據(jù)結(jié)構(gòu)題目名稱括號匹配學(xué)生學(xué)院廣東工業(yè)大學(xué)華立學(xué)院專業(yè)班級09計算機(jī)2學(xué)
號11010902026學(xué)生姓名李杰指導(dǎo)教師林榮霞2010年12月27日廣東工業(yè)大學(xué)華立學(xué)院課程設(shè)計(論文)任務(wù)書題目名稱括號匹配學(xué)生學(xué)部(系)信息與計算機(jī)學(xué)部專業(yè)班級09計算機(jī)2班姓名XX學(xué)號110109020XX一、課程設(shè)計(論文)的內(nèi)容括號匹配問題,假設(shè)一個算術(shù)表達(dá)式中包含圓括號、方括號和花括號三種類型的括號,編寫一個函數(shù),用來判別表達(dá)式中括號是否正確配對。二、課程設(shè)計(論文)的要求與數(shù)據(jù)要求當(dāng)輸入一表達(dá)式,可判斷并輸出括號是否匹配。三、課程設(shè)計(論文)應(yīng)完成的工作(1)根據(jù)上述要求完成一個功能完善的程序;(2)采用模塊化的程序設(shè)計方法,程序書寫符合規(guī)范,程序設(shè)計應(yīng)完善;(3)對系統(tǒng)進(jìn)行初步的錯誤和漏洞檢測;(4)根據(jù)設(shè)計規(guī)范撰寫報告并按時提交;(5)設(shè)計內(nèi)容用A4紙打印并按要求裝訂。四、課程設(shè)計(論文)進(jìn)程安排序號設(shè)計(論文)各階段內(nèi)容地點起止日期1搜集資料圖書館11。24-11.262需求分析圖書館11.27-11.303系統(tǒng)分析與設(shè)計圖書館12.1-12。44功能模塊的實現(xiàn)綜702機(jī)房12.5—12。155系統(tǒng)測試,運行綜702機(jī)房12。16—12。196完成課程設(shè)計(論文)綜702機(jī)房12。20—12。27五、應(yīng)收集的資料及主要參考文獻(xiàn)周海英。馬巧梅。數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(第二版)。國際工業(yè)出版社2005朱戰(zhàn)立。數(shù)據(jù)結(jié)構(gòu)——-使用C語言(第四版).電子工業(yè)出版社2009吳躍。數(shù)據(jù)結(jié)構(gòu)和算法。機(jī)械工業(yè)出版社2010發(fā)出任務(wù)書日期:2010年11月23日指導(dǎo)教師簽名:計劃完成日期:2010年12月27日教學(xué)單位責(zé)任人簽章:目錄1設(shè)計內(nèi)容 12算法思想描述 13算法及程序?qū)崿F(xiàn) 24算法測試及結(jié)果 45總結(jié) 8參考資料 9設(shè)計內(nèi)容:括號匹配問題,假設(shè)一個算術(shù)表達(dá)式中包含圓括號、方括號和花括號三種類型的括號,編寫一個函數(shù),用來判別表達(dá)式中括號是否正確配對。算法要求:要求當(dāng)輸入一表達(dá)式,可判斷并輸出括號是否匹配。算法思想在算術(shù)表達(dá)式中,右括號和左括號匹配的次序正好符合后到的括號要最先被匹配的“后進(jìn)先出”堆棧操作特點,因此可以借助一個堆棧來進(jìn)行判斷。括號匹配共有以下4種情況:左右括號配對次序不正確;右括號多于左括號;左括號多于右括號;左右括號配對正確;具體方法如下:順序掃描算術(shù)表達(dá)式,當(dāng)遇到3種類型括號的左括號時,讓該括號進(jìn)棧.當(dāng)掃描到某一種類型的右括號時,比較當(dāng)前棧頂括號是否與之匹配,若匹配,則退棧繼續(xù)進(jìn)行判斷;若當(dāng)前棧頂括號與當(dāng)前掃描的括號不相同,則左、右括號配對次序不正確;若字符串當(dāng)前為某種類型右括號而堆棧已空,則右括號多于左括號;字符串循環(huán)掃描結(jié)束時,若堆棧非空,則說明左括號多于右括號;如果上述三種情況都沒有出現(xiàn),則說明左、右括號匹配正確。1算法以及程序?qū)崿F(xiàn)主函數(shù)設(shè)計如下:VoidExpIsCorrect(charexp[],intn)//判斷有n個字符的字符串exp左、右括號是否配對正確{SeqStackmyStack;//定義順序堆棧變量myStackinti;charc;StackInitiate(&myStack);//初始化堆棧for(i=0;i<n,i++){if((exp[i]=='(')||(exp[i]==’[’]||(exp[i]==’{’)) StackPush(&myStack,exp[i]);//入棧elseif(exp[i]==')’&&StackNotEmpty(myStack) &&StackTop(myStack,&c)&&c=='(') StackPop(&myStack,&c);//出棧elseif(exp[i]==')'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!='('){ printf(”左右括號配對次序不正確!\n”); return;}//判斷括號elseif(exp[i]==']'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c=='[’) StackPop(&myStack,&c);elseif(exp[i]==’]'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!=’['){ printf("左右括號配對次序不正確!\n”); return;}//判斷方括號elseif(exp[i]=='}'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c=='{') StackPop(&myStack,&c);elseif(exp[i]==']’&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!='{'){ printf("左右括號配對次序不正確!\n"); return;}//判斷花括號elseif(((exp[i]==')')||(exp[i]==')')||(exp[i]==’}’)) &&!StackNotEmpty(myStack)){ printf(”右括號多于左括號!\n"); return;}}if(StackNotEmpty(myStack))printf("左括號多于右括號!\n”);elseprintf("左右括號匹配正確!\n");}3算法測試以及測試結(jié)果函數(shù)頭文件(SeqStack。h):typedefstruct{DataTypestack[MaxStackSize];inttop;}SeqStack;voidStackInitiate(SeqStack*S)/*初始化順序堆棧S*{S—>top=0;/*定義初始棧頂下標(biāo)值*/}intStackNotEmpty(SeqStackS)/*判順序堆棧S非空否,非空則返回1,否則返回0*/{if(S。top〈=0)return0;elsereturn1;}intStackPush(SeqStack*S,DataTypex)/*把數(shù)據(jù)元素值x壓入順序堆棧S,入棧成功則返回1,否則返回0*/{if(S—〉top>=MaxStackSize){printf("堆棧已滿無法插入!\n");return0;}else{S->stack[S->top]=x;S->top++;return1;}}intStackPop(SeqStack*S,DataType*d)/*彈出順序堆棧S的棧頂數(shù)據(jù)元素值到參數(shù)d,出棧成功則返回1,否則返回0*/{if(S->top<=0){printf("堆棧已空無數(shù)據(jù)元素出棧!\n");return0;}else{S—〉top——;*d=S-〉stack[S—>top];return1;}}intStackTop(SeqStackS,DataType*d)/*取順序堆棧S的當(dāng)前棧頂數(shù)據(jù)元素值到參數(shù)d,成功則返回1,否則返回0*/{if(S。top<=0){printf(”堆棧已空!\n”);return0;}else{*d=S.stack[S.top-1];return1;}}測試函數(shù)如下:#include〈string。h>#include〈stdio.h〉#defineMaxStackSize100typedefcharDataType;#include"SeqStack。h"VoidExpIsCorrect(charexp[],intn)//判斷有n個字符的字符串exp左、右括號是否配對正確{SeqStackmyStack;//定義順序堆棧變量myStackinti;charc;StackInitiate(&myStack);//初始化堆棧for(i=0;i<n,i++){if((exp[i]==’(’)||(exp[i]==’[']||(exp[i]==’{')) StackPush(&myStack,exp[i]);//入棧elseif(exp[i]==’)'&&StackNotEmpty(myStack) &&StackTop(myStack,&c)&&c=='(') StackPop(&myStack,&c);//出棧elseif(exp[i]==’)'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!='(’){ printf(”左右括號配對次序不正確!\n"); return;}//判斷括號elseif(exp[i]==']'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c=='[’) StackPop(&myStack,&c);elseif(exp[i]==']’&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!=’[’){ printf(”左右括號配對次序不正確!\n"); return;}//判斷方括號elseif(exp[i]=='}'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c=='{’) StackPop(&myStack,&c);elseif(exp[i]==']'&&StackNotEmpty(myStack)&&StackTop(myStack,&c)&&c!='{'){ printf(”左右括號配對次序不正確!\n”); return;}//判斷花括號elseif(((exp[i]==’)’)||(exp[i]==')')||(exp[i]=='}’)) &&!StackNotEmpty(myStack)){ printf(”右括號多于左括號!\n"); return;}}if(StackNotEmpty(myStack))printf("左括號多于右括號!\n");elseprintf("左右括號匹配正確!\n");}voidmain(void){ chara[]=”(())abc{[]()}”;//測試?yán)? charb[]="(()))abc{[]}";//測試?yán)?charc[]=”(()()abc{[]}";//測試?yán)?chard[]="(())abc{[]}";//測試?yán)? intn1=strlen(a); intn2=strlen(b); intn3=strlen(c); intn4=strlen(d); ExpIsCorrect(a,n1); ExpIsCorrect(b,n2); ExpIsCorrect(c,n3); ExpIsCorrect(d,n4);}測試結(jié)果:左括號配對次序不正確!右括號多于左括號!左括號多于右括號!左右括號匹配正確!7總結(jié) 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在.因此作為二十一世紀(jì)的大學(xué)來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設(shè)計是十分必要的.通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說指針和堆棧的使用。通過這次課程設(shè)計之后,我又把前面所學(xué)過的知識又重新溫故了一遍。我做的課題是:編一個程序判斷括號是否匹配。我發(fā)現(xiàn)編程是一件很枯燥很無聊的事情,但是我強破自己堅持下去,按照老師所說的模塊化思想,分部分的進(jìn)行編寫.而且編程是一件高精度、模范化的事情,稍有疏乎都會影響全局,也可能因為某一處的小的錯誤而導(dǎo)致整個程序的無法運行。所以認(rèn)真仔細(xì)就是非常重要的了.開始的時候真的感覺編程是一件很無聊的事情,不過當(dāng)一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。很慶幸最終我完成了這個作業(yè)通過這次課程設(shè)計,使我對C語言有了更進(jìn)一步的認(rèn)識和了解,要想學(xué)好它要重在實踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,我也發(fā)現(xiàn)我的好多不足之處,比如說經(jīng)常漏寫分號和把中文的標(biāo)點符號寫進(jìn)去程序里面,但是我會在接下來的學(xué)習(xí)中改掉這些毛病也會更加注視實踐操作,使自己能夠把這門課程學(xué)好.8參考文獻(xiàn)周海英。馬巧梅.數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(第二版).國際工業(yè)出版社2005朱戰(zhàn)立.數(shù)據(jù)結(jié)構(gòu)—--使用C語言(第四版).電子工業(yè)出版社2009吳躍。數(shù)據(jù)結(jié)構(gòu)和算法。機(jī)械工業(yè)出版社20109心得體會課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識、發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計算機(jī)應(yīng)用在生活中
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛買賣賒購合同
- 倉房買賣合同協(xié)議書
- 的聘用合同年
- 銀行解除借款合同
- 《蘇武傳》教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修中冊
- Unit 1 How can I get there?PartA(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 山東醫(yī)學(xué)高等專科學(xué)?!段锢砘瘜W(xué)B(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東華宇工學(xué)院《土木工程材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西藥科職業(yè)學(xué)院《財務(wù)大數(shù)據(jù)決策》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院《有色冶金設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 中債違約債券估值方法(2020年版)
- 《經(jīng)典常談》課件
- 四川省2024年中考數(shù)學(xué)試卷十七套合卷【附答案】
- 北師大版二年級數(shù)學(xué)下冊全冊10套試卷(附答案)
- GB/T 2423.17-2024環(huán)境試驗第2部分:試驗方法試驗Ka:鹽霧
- 數(shù)字出版概論 課件 第六章 數(shù)字內(nèi)容加工、管理技術(shù)
- 糖尿病并發(fā)癥的早期篩查
- 2019年山東省職業(yè)院校技能大賽中職組“沙盤模擬企業(yè)經(jīng)營”賽項規(guī)程
- GB/T 32399-2024信息技術(shù)云計算參考架構(gòu)
- 初中體育與健康 初二 水平四(八年級)田徑大單元教學(xué)設(shè)計+快速跑教案
-
評論
0/150
提交評論