資源描述:
《敢死隊問題課程設計報告》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、數(shù)據(jù)結構課程設計題目:《敢死隊問題》作者:***院(系):信息工程學院專業(yè):信息管理與信息系統(tǒng)指導教師:***日期:2013年11月26日11/11目錄第一章緒論……………………………………………………………3第二章需求分析………………………………………………………4第三章詳細設計………………………………………………………4第四章調試分析………………………………………………………7第五章測試結果………………………………………………………8第六章源程序代碼……………………………………………………8第七章實驗總結…………………………………
2、……………………10第八章參考文獻………………………………………………………1111/11第一章緒論課程設計時實踐性教學中的一個重要環(huán)節(jié),它以某一課程為基礎,可以涉及和課程相關的各個發(fā)面,是一門獨立于課程之外的獨立課程。課程設計時讓同學們對所學的課程更全面的學習和應用,可以理解和掌握課程的相關知識?!稊?shù)據(jù)結構》是一門重要的專業(yè)基礎課,是計算機理論和應用的核心基礎課程。數(shù)據(jù)結構課程設計,要求學生在數(shù)據(jù)結構的邏輯特性和物理表示、數(shù)據(jù)結構的選擇和應用、算法的設計及其實現(xiàn)等方面,加深對課程基本內容的理解。同時,在程序設計方法以及上機操作等基本
3、技能和科學作風等方面受到比較系統(tǒng)和嚴格的訓練。在這次的課程設計中我選擇的題目是敢死隊問題。加強版的約瑟夫環(huán)問題(用戶輸入N,M值,從1至N開始順序循環(huán)數(shù)數(shù),每數(shù)到M輸出該值,直到全部輸出,最后輸出的一個獲勝),增加了保證1號安全這一條件限制。并且模擬各個開始位置,隊員死亡的順序,以及最后的獲勝者。課程設計的目的的意義:加深對循環(huán)隊列和數(shù)組的理解,以及對循環(huán)隊列和數(shù)組的實際應用,加強自己的動手操作能力,增加對課程的興趣,而不是枯燥的看課本。課程設計—《敢死隊問題》描述有n個敢死隊員要炸掉敵人的一碉堡,誰都不想去,排長決定用輪回數(shù)數(shù)的辦法
4、來決定哪個戰(zhàn)士去執(zhí)行任務。如果前一個戰(zhàn)士沒完成任務,則要再派一個戰(zhàn)士上去?,F(xiàn)給每個戰(zhàn)士編一個號,大家圍坐成一圈,隨便從某一個戰(zhàn)士開始計數(shù),當數(shù)到5時,對應的戰(zhàn)士就去執(zhí)行任務,且此戰(zhàn)士不再參加下一輪計數(shù)。如果此戰(zhàn)士沒完成任務,再從下一個戰(zhàn)士開始數(shù)數(shù),被數(shù)到第5時,此戰(zhàn)士接著去執(zhí)行任務。以此類推,直到任務完成為止。排長是不愿意去的,假設排長為1號,請你設計一程序,求出從第幾號戰(zhàn)士開始計數(shù)才能讓排長最后一個留下來而不去執(zhí)行任務。11/11第二章需求分析1.本程序任務是通過輸入任意隊伍人數(shù)n和報數(shù)上限m,輸出使排長最后一個執(zhí)行任務而開始記數(shù)的
5、初始位置。首先輸入隊伍人數(shù)n,然后輸入報數(shù)上限m(m<=n)。比如從1號開始報數(shù),當達到報數(shù)上限時,那名士兵出列執(zhí)行任務,從下個人開始記數(shù),再次循環(huán),直到只剩一人,得到其在隊伍中的位置,記下該位置視為排長位置,則1號即可視為最先報數(shù)的人,通過數(shù)學計算即可獲得所求。2.功能模塊和流程:1)功能模塊該程序功能比較單一,主要是為解決敢死隊問題而設計。通過輸入隊伍人數(shù)和報數(shù)上限即可獲得開始報數(shù)的位置。2)程序流程(1)構造鏈表(2)數(shù)據(jù)輸入(3)執(zhí)行刪除(4)輸出要求數(shù)值(5)結束3.數(shù)據(jù)測試:當n=10,m=5,輸出結果為:要求的位置是:9
6、。第三章詳細設計1.算法設計:本程序其實質是約瑟夫環(huán)問題。從排長位置即1號開始報數(shù),共有n個人,達到報數(shù)上限m=5的戰(zhàn)士出列,繼續(xù)進行報數(shù),直到剩余最后一人,記下該位置為k。若將該位置視為排長位置,則原先的1號位置即位所有的開始報數(shù)的位置z。則z=n-k+2。2.以單循環(huán)鏈表為存儲結構,包含三個模塊:(1)主程序模塊(2)構造鏈表并初始化(3)刪除結點11/11開始聲明類型定義變量并初始化初始化單鏈表循環(huán)模塊輸入敢死隊員總數(shù)剩下的隊員數(shù)>1?隊員報數(shù)報數(shù)值=死亡數(shù)?隊員出列輸出結果否是否3.結點類型和指針類型typedefstruct
7、node{intdata;structnode*next;}LNode;/*定義結點類型*/LNode*p;4.每個模塊的分析(1)主程序模塊:main(){LNode*p;intm,n,z,y;11/11do{printf("Pleaseinputthepeoplenumber:");scanf("%d",&n);}while(n<=0);do{printf("Pleaseinputtheexcursion:");scanf("%d",&m);}while(m<=0);if(n==1)printf("thepositioni
8、s:1");else{p=CREAT(n);y=DELETE(p,m);z=n-y+2;if(z%n==0)/*排除特殊情況*/printf("thepositionis:%d",z);elseprintf("t