資源描述:
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--猴子吃桃問題》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目:猴子吃桃問題院(系):數(shù)理學(xué)院專業(yè):信息計(jì)算科學(xué)班級:計(jì)科1101學(xué)生:史城逸學(xué)號:1104101127指導(dǎo)老師:周海巖2012年6月摘要當(dāng)下C++語言是一門重要的課程學(xué)習(xí),學(xué)會運(yùn)用并結(jié)合其他的知識一起解題是一件值得我們重視的,數(shù)據(jù)結(jié)構(gòu)是一門結(jié)合C++知識的重要課程,因此我們要學(xué)會將平時(shí)課本的知識運(yùn)用到我們現(xiàn)實(shí)生活當(dāng)中,這樣才能讓我們所學(xué)的知識更加深刻。猴子吃桃的問題就是一個(gè)例子,我們可以運(yùn)用簡單的三種解法進(jìn)行解題,即數(shù)組求值解法,鏈表求值解法和遞歸求值解法,通過分析三種解法,根據(jù)各種解法的功能從而我們得到最合適的求法。關(guān)鍵詞:猴子吃桃,數(shù)組
2、法,鏈表法,遞歸法,分析AbstractThec++languageisanimportantcoursestudy,learntouseandincombinationwithotherknowledgeproblemsolvingisaworthytogetherwevalue,thedatastructuretobeacombinationC++knowledgeimportantcourse,sowehavetolearnhowtousetheknowledgewillusuallytextbookstoourrealitylife,sothatwecanap
3、plytheknowledgemoredeeply.Themonkeyseatthepeachproblemisoneexample,wecanusesimplethreesolutiontoproblemsolving,namelyarrayevaluatedmethod,thelistoftheevaluatedhydrolysisandrecursionevaluatedmethod,throughtheanalysisofthreekindsofsolution,accordingtovariousmethodstogetthemostappropriatef
4、unctionswethemethod.Keywords:themonkeyseatthepeach,thearraymethod,chaintablemethod,arecursivemethod,analysis目錄1、需求分析32、概要設(shè)計(jì)32.1.用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解32.2.用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解42.3用遞歸實(shí)現(xiàn)上述求解42.4用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解43、運(yùn)行環(huán)境43.1硬件環(huán)境43.2軟件環(huán)境44、詳細(xì)設(shè)計(jì)54.1系統(tǒng)流程圖54.2用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解54.3用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解54.4用遞歸實(shí)現(xiàn)上述求解74.5用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解75、
5、調(diào)試分析96、運(yùn)行結(jié)果9課程設(shè)計(jì)總結(jié)13致謝14參考文獻(xiàn)151、需求分析1、猴子吃桃子問題有一群猴子摘了一堆桃子,他們每天都吃當(dāng)前桃子的一半且再多吃一個(gè),到了第10天就只余下一個(gè)桃子。用多種方法實(shí)現(xiàn)求出原來這群猴子共摘了多少個(gè)桃子。?要求:1)?采用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解2)?采用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解3)?采用遞歸實(shí)現(xiàn)上述求解4)如果采用第4種做法,適當(dāng)加分2、概要設(shè)計(jì)2.1.用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解在taozi函數(shù)中定義一個(gè)一維數(shù)組,分別存儲每天的桃子個(gè)數(shù),根據(jù)題目的內(nèi)容找出各個(gè)數(shù)之間的關(guān)系,用數(shù)組元素表示出來,根據(jù)用戶輸入要計(jì)算哪一天的桃子,用for循環(huán)控制
6、結(jié)束。在main函數(shù)中讓用戶輸入要計(jì)算的哪一天,調(diào)用taozi函數(shù),以便用戶可查出任意一天的桃子個(gè)數(shù),用switch語句判斷用戶要執(zhí)行的功能,然后用while循環(huán)控制,直到用戶輸入0為止。2.2.用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解先寫出預(yù)定義常量和類型,寫出結(jié)點(diǎn)的類型定義,創(chuàng)建結(jié)點(diǎn),初始化鏈表,定義變量并初始化,找出結(jié)點(diǎn)與其后繼結(jié)點(diǎn)之間的聯(lián)系,然后在主函數(shù)中控制。2.3用遞歸實(shí)現(xiàn)上述求解這種方法跟上述幾種不同,在函數(shù)的執(zhí)行函數(shù)的過程中,需多次進(jìn)行自我調(diào)用,遞歸函數(shù)的運(yùn)行過程類似與多個(gè)函數(shù)的嵌套調(diào)用,只是調(diào)用函數(shù)和被調(diào)用函數(shù)是同一個(gè)函數(shù),從主函數(shù)開始調(diào)用,一次更深一層,退出時(shí)一步
7、一步返回到上一層,所以不需寫控制循環(huán)語句,不需要寫控制循環(huán)語句,比上幾種方法簡單點(diǎn)。2.4用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解本部分包括預(yù)定義常量和類型,順序棧的定義,InitStack函數(shù),Push函數(shù),和main函數(shù),在InitStack函數(shù)構(gòu)造一個(gè)空棧,在Push函數(shù)中調(diào)用該函數(shù),并在其中編寫控制棧頂指針和棧底指針移動(dòng)的語句,找出指針?biāo)赶虻臄?shù)據(jù)之間的關(guān)系,在main函數(shù)中編寫控制循環(huán)結(jié)束的語句,最后再用main函數(shù)去調(diào)用Push函數(shù)。3、運(yùn)行環(huán)境3.1硬件環(huán)境PC3.2軟件環(huán)境(1)WindowsXP(2)MicrosoftVisualC++6.04、詳細(xì)設(shè)