九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)

上傳人:沈*** 文檔編號(hào):83825824 上傳時(shí)間:2022-05-02 格式:DOC 頁數(shù):15 大?。?3KB
收藏 版權(quán)申訴 舉報(bào) 下載
猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁
第1頁 / 共15頁
猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁
第2頁 / 共15頁
猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁
第3頁 / 共15頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《猴子吃桃子問題 大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(15頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、word目錄1、需求分析12、概要設(shè)計(jì)12.1.用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解12.2.用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解12.3 用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解12.4 用遞歸實(shí)現(xiàn)上述求解23、 運(yùn)行環(huán)境23.1 硬件環(huán)境2軟件環(huán)境24、 詳細(xì)設(shè)計(jì)2系統(tǒng)流程圖2用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解3用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解4用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解5用遞歸實(shí)現(xiàn)上述求解65、 調(diào)試分析76、運(yùn)行結(jié)果7課程設(shè)計(jì)總結(jié)8參考文獻(xiàn)9附錄:91、需求分析1、 猴子吃桃子問題有一群猴子摘了一堆桃子,他們每天都吃當(dāng)前桃子的一半且再多吃一個(gè),到了第10天就只余下一個(gè)桃子。用多種方法實(shí)現(xiàn)求出原來這群猴子共摘了多少個(gè)桃子。要求:1)采用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)

2、現(xiàn)上述求解2)采用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解3)采用棧實(shí)現(xiàn)上述求解4)采用遞歸實(shí)現(xiàn)上述求解2、概要設(shè)計(jì) 在taozi函數(shù)中定義一個(gè)一維數(shù)組,分別存儲(chǔ)每天的桃子個(gè)數(shù),根據(jù)題目的內(nèi)容找出各個(gè)數(shù)之間的關(guān)系,用數(shù)組元素表示出來,根據(jù)用戶輸入要計(jì)算哪一天的桃子,用for循環(huán)控制完畢。在main函數(shù)中讓用戶輸入要計(jì)算的哪一天,調(diào)用taozi函數(shù),以便用戶可查出任意一天的桃子個(gè)數(shù),用switch語句判斷用戶要執(zhí)行的功能,然后用while循環(huán)控制,直到用戶輸入0為止。 先寫出預(yù)定義常量和類型,寫出結(jié)點(diǎn)的類型定義,創(chuàng)建結(jié)點(diǎn),初始化鏈表,定義變量并初始化,找出結(jié)點(diǎn)與其后繼結(jié)點(diǎn)之間的聯(lián)系,然后在主函數(shù)中控制。2.3 用

3、棧數(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)完畢的語句,最后再用main函數(shù)去調(diào)用Push函數(shù)。2.4 用遞歸實(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í)一步一步返回到上一層,所以不需寫控制循環(huán)語

4、句,不需要寫控制循環(huán)語句,比上幾種方法簡(jiǎn)單點(diǎn)。3、 運(yùn)行環(huán)境3.1 硬件環(huán)境PC1Windows XP2Microsoft Visual 4、 詳細(xì)設(shè)計(jì)猴子吃桃問題的實(shí)現(xiàn)用數(shù)組結(jié)構(gòu)實(shí)現(xiàn)用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)用遞歸方法實(shí)現(xiàn)用數(shù)組數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)上述求解/計(jì)算桃子的個(gè)數(shù)void taozi(int n,int m) int day10;/初始化變量,用數(shù)組元素分別存儲(chǔ)每天的桃子個(gè)數(shù)int i;/控制循環(huán)執(zhí)行的次數(shù)day0=n;/最后一天的桃子個(gè)數(shù) for(i=0;inext=NULL;/創(chuàng)建一個(gè)帶頭結(jié)點(diǎn)的單鏈表 L-next=p;/插入到表頭 L-next-data=e;/初始化第一個(gè)結(jié)點(diǎn)

5、for(i=m-1;i0;i-) s=(LNode *) malloc(sizeof(LNode); p-next=s; s-data=2*(p-data+1);/結(jié)點(diǎn)與下一結(jié)點(diǎn)之間的聯(lián)系 p=s;/指針P總是指向最后一個(gè)結(jié)點(diǎn) s-next=NULL; printf(第%d天的桃子為:%dn,11-m,p-data);用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)求解/儲(chǔ)存空間初始分配量#define STACK_INIT_SIZE 100 /順序棧的定義typedef struct int *base;/棧底指針 int *top;/棧頂指針 int stacksize;/當(dāng)前已分配的存儲(chǔ)空間SqStack;SqStac

6、k s;/構(gòu)造一個(gè)空棧int InitStack() s.base=(int *) malloc(STACK_INIT_SIZE * sizeof(int); if(!s.base) exit (OVERFLOW);/存儲(chǔ)分配失敗 s.top=s.base;/剛開始棧為空 s.stacksize=20; return OK;/計(jì)算桃子個(gè)數(shù)的函數(shù)void Push(int e,int m)/ m是要計(jì)算的是第幾天 int i; InitStack(); *s.top+=e;/給棧底元素初始化 for(i=0;i0) y=2*(x+1); i-;/循環(huán)控制條件 taozi(y); printf(%

7、dn,y); 5、 調(diào)試分析 1 在用鏈數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)時(shí),運(yùn)行時(shí)沒有顯示錯(cuò)誤,但輸出不是預(yù)測(cè)的結(jié)果,代碼如下:for(i=m-1;i0;i-) s=(LNode *) malloc(sizeof(LNode); p-next=s; s-data=2*(p-data+1); s-next=NULL;在指針的移動(dòng)時(shí),由于p總是第一個(gè)結(jié)點(diǎn),在for循環(huán)前已經(jīng)被賦值,指針P 應(yīng)該總是指向最后一個(gè)結(jié)點(diǎn)的,所以在這句s-next=NULL前加上一句p=s就行了, 就能輸出正確結(jié)果。2 在生成新結(jié)點(diǎn)時(shí),一定要用強(qiáng)制類型轉(zhuǎn)換,要不就要出錯(cuò)。不能把s=(LNode *) malloc(sizeof(LNode)寫

8、成s=(LNode) malloc(sizeof(LNode);因?yàn)樗鼈儾粚儆谕活愋汀? 在用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的過程中,雖然只有一個(gè)錯(cuò)誤,但卻顯示了好多錯(cuò)誤。主要原因是由于一個(gè)參數(shù)是在main函數(shù)中定義的,但卻被其它函數(shù)調(diào)用,只要把該參數(shù)定義成全局變量就行了。4 在用while循環(huán)時(shí),由于控制條件的不恰當(dāng)導(dǎo)致的錯(cuò)誤,不過只要再認(rèn)真分析一下,就正確了。5 還有些其它方面的錯(cuò)誤,不過只要看一眼,就能改正,是粗心造成的。6、運(yùn)行結(jié)果 鏈數(shù)組和棧實(shí)現(xiàn)結(jié)果:遞歸實(shí)現(xiàn)結(jié)果:課程設(shè)計(jì)總結(jié)通過這一周的實(shí)踐學(xué)習(xí),我認(rèn)識(shí)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),以與其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,很多

9、以前學(xué)過的東西,在運(yùn)用時(shí)都不能很熟練,也說明理論知識(shí)和實(shí)踐之間的差異。這就告訴了我們?cè)谝院蟮膶W(xué)習(xí)過程中要培養(yǎng)自己的動(dòng)手能力,要將學(xué)過的知識(shí)轉(zhuǎn)化為實(shí)踐。作為一個(gè)計(jì)科專業(yè)的學(xué)生,通過這周的學(xué)習(xí),使我更加明白了動(dòng)手能力的重要性。在這次的課程設(shè)計(jì)中,我不斷地去找書本知識(shí)和查閱其它有關(guān)資料,不僅鞏固了對(duì)課本知識(shí)的掌握,還有利于以后更好的進(jìn)步,提高了對(duì)課外知識(shí)的了解,雖然花費(fèi)了不少時(shí)間,但只要學(xué)到有價(jià)值的東西,我認(rèn)為都是值得的。在完成該試驗(yàn)的過程中,我問了同學(xué)和教師,還查閱了很多和鏈表有關(guān)系的書籍,通過學(xué)習(xí),翻看以前學(xué)過的知識(shí),使我明白了我在學(xué)習(xí)知識(shí)上的很多不足。不過在此同時(shí)又重新復(fù)習(xí)了課本,從中學(xué)到了許

10、多以前未學(xué)到的知識(shí),感覺非常有成就感,讓我對(duì)自己更加有信心,讓我對(duì)數(shù)據(jù)結(jié)構(gòu)這門課程也更感興趣了,以前我一直感覺枯燥難學(xué)的數(shù)據(jù)結(jié)構(gòu),現(xiàn)在我也愿意去認(rèn)真研究學(xué)習(xí)了。這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)中,多虧了我的指導(dǎo)教師黃磊教師的悉心教誨。在以后的學(xué)習(xí)過程中,我要認(rèn)真負(fù)責(zé)地對(duì)待課本中的每一個(gè)知識(shí)點(diǎn),進(jìn)一步充實(shí)自己,提高自己。參考文獻(xiàn)1 黃同成,黃俊民,董建寅數(shù)據(jù)結(jié)構(gòu)M:中國(guó)電力,20082 董建寅,黃俊民,黃同成數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)與題解M:中國(guó)電力,20083 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)C語言版M. :清華大學(xué),20024 X振鵬,X曉莉,郝杰數(shù)據(jù)結(jié)構(gòu)M:中國(guó)鐵道,2003附錄:源代碼如下1 用數(shù)組數(shù)據(jù)結(jié)構(gòu)編寫#

11、includevoid taozi(int n,int m) int day10; int i; day0=n; for(i=0;i10-m;i+) dayi+1=2*(dayi+1); printf(第%d天的桃子為:%dn,m,day10-m);void main() int m; printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scanf(%d,&m); taozi(1,m); while(1) int j; printf(請(qǐng)輸入j的值 0:退出 1:繼續(xù):n); scanf(%d,&j); switch(j) case 1: printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scan

12、f(%d,&m); taozi(1,m); break; case 0: return; break; default: printf(輸入有誤請(qǐng)重新輸入!); 2 用鏈數(shù)據(jù)結(jié)構(gòu)編寫#include#include#define NULL 0typedef struct LNode int data; struct LNode *next;LNode;LNode *L;LNode *p,*s;int CreateList_L(int e,int m) int i; L=(LNode *) malloc(sizeof(LNode); p=(LNode *) malloc(sizeof(LNode

13、); L-next=NULL;/創(chuàng)建頭結(jié)點(diǎn) L-next=p; L-next-data=e; for(i=m-1;i0;i-) s=(LNode *) malloc(sizeof(LNode); p-next=s; s-data=2*(p-data+1); p=s;/指針P總是指向最后一個(gè)結(jié)點(diǎn) s-next=NULL; printf(第%d天的桃子為:%dn,11-m,p-data);void main() int n; int k;printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scanf(%d,&n); k=11-n; CreateList_L(1,k); while(1)int j;

14、printf(請(qǐng)輸入j的值 0:退出 1:繼續(xù):n); scanf(%d,&j); switch(j)case 1:printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scanf(%d,&n); k=11-n; CreateList_L(1,k); break; case 0: return; break; default: printf(輸入有誤請(qǐng)重新輸入!); 3 用棧數(shù)據(jù)結(jié)構(gòu)編寫#include#include#define STACK_INIT_SIZE 100 #define OK 1#define OVERFLOW -2typedef struct int *base; int *t

15、op; int stacksize;SqStack;SqStack s;int InitStack() s.base=(int *) malloc(STACK_INIT_SIZE * sizeof(int); if(!s.base) exit (OVERFLOW); s.top=s.base; s.stacksize=20; return OK;void Push(int e,int m) int i; InitStack(); *s.top+=e; for(i=0;i10-m;i+) *s.top=2*(*(s.top-1)+1); s.top+; printf(第%d天的桃子為:%dn,m

16、,*(s.top-1);void main() int m; printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scanf(%d,&m); Push(1,m); while(1) int j; printf(請(qǐng)輸入j的值 0:退出 1:繼續(xù):n); scanf(%d,&j); switch(j) case 1: printf(請(qǐng)輸入要求第幾天剩下的桃子:n); scanf(%d,&m); Push(1,m); break; case 0: return; break; default: printf(輸入有誤請(qǐng)重新輸入!); 4 用遞歸編寫 #includeint i=9;int taozi(int x)int y;while(i0) y=2*(x+1); i-; taozi(y); printf(%dn,y); void main()int a=1;taozi(a);printf(1n);14 / 15

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!