資源描述:
《猴子吃桃子問題 大數(shù)據(jù)結構課程設計》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、實用標準文案目錄1、需求分析12、概要設計12.1.用數(shù)組數(shù)據(jù)結構實現(xiàn)上述求解12.2.用鏈數(shù)據(jù)結構實現(xiàn)上述求解12.3用棧數(shù)據(jù)結構實現(xiàn)求解12.4用遞歸實現(xiàn)上述求解23、運行環(huán)境23.1硬件環(huán)境23.2軟件環(huán)境24、詳細設計24.1系統(tǒng)流程圖24.2用數(shù)組數(shù)據(jù)結構實現(xiàn)上述求解34.3用鏈數(shù)據(jù)結構實現(xiàn)上述求解44.4用棧數(shù)據(jù)結構實現(xiàn)求解54.5用遞歸實現(xiàn)上述求解65、調試分析76、運行結果7課程設計總結8參考文獻9附錄:9精彩文檔實用標準文案1、需求分析1、猴子吃桃子問題有一群猴子摘了一堆桃子,他們每天都吃當前桃子的一半且再多吃一個,
2、到了第10天就只余下一個桃子。用多種方法實現(xiàn)求出原來這群猴子共摘了多少個桃子。?要求:1)?采用數(shù)組數(shù)據(jù)結構實現(xiàn)上述求解2)?采用鏈數(shù)據(jù)結構實現(xiàn)上述求解3)?采用棧實現(xiàn)上述求解4)?采用遞歸實現(xiàn)上述求解2、概要設計2.1.用數(shù)組數(shù)據(jù)結構實現(xiàn)上述求解在taozi函數(shù)中定義一個一維數(shù)組,分別存儲每天的桃子個數(shù),根據(jù)題目的內容找出各個數(shù)之間的關系,用數(shù)組元素表示出來,根據(jù)用戶輸入要計算哪一天的桃子,用for循環(huán)控制結束。在main函數(shù)中讓用戶輸入要計算的哪一天,調用taozi函數(shù),以便用戶可查出任意一天的桃子個數(shù),用switch語句判斷用戶
3、要執(zhí)行的功能,然后用while循環(huán)控制,直到用戶輸入0為止。2.2.用鏈數(shù)據(jù)結構實現(xiàn)上述求解先寫出預定義常量和類型,寫出結點的類型定義,創(chuàng)建結點,初始化鏈表,定義變量并初始化,找出結點與其后繼結點之間的聯(lián)系,然后在主函數(shù)中控制。2.3用棧數(shù)據(jù)結構實現(xiàn)求解本部分包括預定義常量和類型,順序棧的定義,InitStack函數(shù),Push函數(shù),和main函數(shù),在InitStack函數(shù)構造一個空棧,在Push函數(shù)中調用該函數(shù),并在其中編寫控制棧頂指針和棧底指針移動的語句,找出指針所指向的數(shù)據(jù)之間的關系,在main函數(shù)中編寫控制循環(huán)結束的語句,最后再
4、用main函數(shù)去調用Push函數(shù)。精彩文檔實用標準文案2.4用遞歸實現(xiàn)上述求解這種方法跟上述幾種不同,在函數(shù)的執(zhí)行函數(shù)的過程中,需多次進行自我調用,遞歸函數(shù)的運行過程類似與多個函數(shù)的嵌套調用,只是調用函數(shù)和被調用函數(shù)是同一個函數(shù),從主函數(shù)開始調用,一次更深一層,退出時一步一步返回到上一層,所以不需寫控制循環(huán)語句,不需要寫控制循環(huán)語句,比上幾種方法簡單點。3、運行環(huán)境3.1硬件環(huán)境PC3.2軟件環(huán)境(1)WindowsXP(2)MicrosoftVisualC++6.04、詳細設計4.1系統(tǒng)流程圖猴子吃桃問題的實現(xiàn)用數(shù)組結構實現(xiàn)用鏈數(shù)據(jù)
5、結構實現(xiàn)用棧數(shù)據(jù)結構實現(xiàn)用遞歸方法實現(xiàn)精彩文檔實用標準文案4.2用數(shù)組數(shù)據(jù)結構實現(xiàn)上述求解//計算桃子的個數(shù)voidtaozi(intn,intm){intday[10];//初始化變量,用數(shù)組元素分別存儲每天的桃子個數(shù)inti;//控制循環(huán)執(zhí)行的次數(shù)day[0]=n;//最后一天的桃子個數(shù)for(i=0;i<10-m;i++)day[i+1]=2*(day[i]+1);//相鄰元素之間的關系printf("第%d天的桃子為:%d",m,day[10-m]);}voidmain(){intm;//用戶要計算的是第幾天printf(
6、"請輸入要求第幾天剩下的桃子:");scanf("%d",&m);taozi(1,m);//調用while(1){intj;//循環(huán)控制條件printf("請輸入j的值0:退出1:繼續(xù):");scanf("%d",&j);switch(j){//當j=1時,用戶可以輸入多次想要的數(shù)值case1:printf("請輸入要求第幾天剩下的桃子:");scanf("%d",&m);taozi(1,m);精彩文檔實用標準文案break;//跳出//當j=0時,跳出switch結構case0:return;break;//當用戶輸入除
7、0和1以外的數(shù)值時,會讓你重新輸入,直到輸入正確為止default:printf("輸入有誤請重新輸入!");}}}4.3用鏈數(shù)據(jù)結構實現(xiàn)上述求解//預定義常量和類型#defineNULL0//單鏈表的存儲結構typedefstructLNode{intdata;//數(shù)據(jù)域structLNode*next;//指針域}LNode;LNode*L;LNode*p,*s;//計算桃子的個數(shù)intCreateList_L(inte,intm)//e是第十天的桃子的個數(shù),m是將要計算的是第幾天{inti;L=(LNode*)malloc(si
8、zeof(LNode));//生成新結點p=(LNode*)malloc(sizeof(LNode));L->next=NULL;//創(chuàng)建一個帶頭結點的單鏈表精彩文檔實用標準文案L->next=p;//插入到表頭L->n