




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告約瑟夫生者死者游戲學生姓名: 專 業(yè): 班 級: 學 號: 指導教師: 2017年 3月29日目錄一、實驗題目2二、實驗目的2三、實驗要求2四、實現(xiàn)過程31、總體設計:32、詳細設計:33、調試分析:34、運行結果:35、實驗總結:6五、參考文獻6一、實驗題目約瑟夫生者死者游戲二、實驗目的本次課程設計的主要目的是綜合運用所學的數(shù)據(jù)結構知識解決Jonsepu環(huán)問題,側重對循環(huán)鏈表等相關內(nèi)容的綜合應用,使自己能進一步熟悉掌握數(shù)據(jù)結構的基礎知識,進一步提升自己的解決問題和編程調試能力,為后續(xù)專業(yè)課程的學習打下良好的基礎。三、實驗要求設計要求本游戲的數(shù)學建模如下:假設n個旅客排成一個環(huán)形,
2、依次順序編號1,2,n。從某個指定的第1號開始,沿環(huán)計數(shù),每數(shù)到第m個人就讓其出列,且從下一個人開始重新計數(shù),繼續(xù)進行下去。這個過程一直進行到剩下k個旅客為止。本游戲的要求用戶輸入的內(nèi)容包括: 1. 旅客的個數(shù),也就是n的值; 2. 離開旅客的間隔數(shù),也就是m的值;3. 所有旅客的序號作為一組數(shù)據(jù)要求存放在某種數(shù)據(jù)結構中。本游戲要求輸出的內(nèi)容是包括1. 離開旅客的序號; 2. 剩余旅客的序號; 四、實現(xiàn)過程1、總體設計:1. 主流程圖:開始輸入總人數(shù)創(chuàng)建鏈表打印鏈表輸入報數(shù)人的位置輸入報的數(shù)字調用踢出人的模塊Out(head,beg,val,huo)結束2. Out函數(shù)流程圖 開始將p指針指向
3、起始報數(shù)的位置剩下的人數(shù)大于輸入留下的人數(shù)否是P指針移動n-3個位置 q指針指向p的下一個結點刪除q指針所指的結點p指針指向q的下一個結點釋放q指針所指向結點的空間Flag+結束2、詳細設計:1.結構體typedef struct Jonse/*定義結構體*/int code;/*編號(分配位置)*/struct Jonse *next;jonse;2.鏈表的構造函數(shù)jonse * Create(int n)/*建立n個節(jié)點的單向循環(huán)鏈表函數(shù)*/Jonse *h,*p;int i;h=(Jonse *)malloc(sizeof(Jonse);/*為頭結點分配空間*/p=h;for(i=1;i
4、<=n;i+)/*建立n個節(jié)點的單向鏈表*/p->code=i;if(i<n)p->next=(Jonse *)malloc(sizeof(Jonse);/*創(chuàng)建新節(jié)點*/p=p->next;p->next=h;/*返回頭結點,完成單向循環(huán)鏈表的建立*/return h;3.輸出鏈表的函數(shù)void ShowList(Jonse *h)/*打印鏈表函數(shù)*/Jonse *p;p=h;doprintf("%dt",p->code);p=p->next;while(p!=h);4.實現(xiàn)將人剔除的函數(shù)void Out(Jonse *h,
5、int i,int d,int s)/*出隊函數(shù)*/int c;c=s;Jonse *p,*q;int k;p=h;for(q=h;q->next!=h;q=q->next);/*初始化鏈表*/for(k=1;k<i;k+)/*次循環(huán)功能:設置好開始報數(shù)的人所在位置*/q=p;p=p->next;while(p!=p->next)/*循環(huán)刪除隊列結點*/for(k=1;k<d;k+)/*數(shù)數(shù)*/q=p;p=p->next;printf("%d ",p->code);/*輸出被踢節(jié)點的位置*/q->next=p->n
6、ext;free(p);/*釋放被踢出的結點*/p=NULL;/*讓p指針賦值為空指針*/p=q->next;flag+;if(num-flag=c)break;printf("n剩余游客的編號:n");/free(p);/*釋放被踢出的結點*/p=NULL;/*讓p指針賦值為空指針*/p = h;doprintf("%d ",p->code);p=p->next;while(p!=h);printf("n");3、調試分析:程序的編寫和調試基本正常。遇到的問題主要是:鏈表的指向的邊界問題。本實驗采用數(shù)據(jù)抽象與模塊化
7、程序設計方法,思路清晰,實驗時調試順利,各模塊具有很好的可重用性,得到了一次良好的程序設計訓練。本實驗算法是使用循環(huán)鏈表的方法,由于這種方法在刪除一個節(jié)點后對其他節(jié)點的位置改動放不大,所以很浪費時間,每次都刪除第m個數(shù)字,都要用O(m)的時間,一共有n個數(shù)字,想要剩下一個,其余都要刪除,那么就要用(n-1)*O(m)的時間,所以算法的時間復雜度為O(mn)。還可以用數(shù)組來實現(xiàn)本實驗,減少時間的浪費。4、運行結果:1. 要求輸入?yún)⑴c者的總人數(shù):2. 打印出創(chuàng)建好的鏈表,并提示輸入開始報數(shù)的位置:3. 輸入報數(shù)人所在的位置,并提示輸入報數(shù)的最大值:4. 輸入報數(shù)的最大值,并提示輸入留下的人數(shù): 5
8、. 輸入留下人數(shù),計算顯示結果:結果為刪除的人所在的位置和留下的人數(shù):5、實驗總結: 通過本次課程設計的鍛煉,使我對數(shù)據(jù)結構又有了許多新的深刻認識,更深的理解了數(shù)據(jù)結構的難點,并且通過這次課程設計,我把以前認為沒有實際用途的知識轉化為了實際問題來解決,非常有意思,同時也覺得這種學習方法,更好的提高學習的效率,以下就是我做這次課程設計的主要體會: 一方面,在程序設計語言中,每一個數(shù)據(jù)都屬于某種數(shù)據(jù)類型。類型明顯或隱含地規(guī)定了數(shù)據(jù)的取值范圍、存儲方式以及允許進行的運算。另一方面,在程序設計過程中,當需要引入某種新的數(shù)據(jù)結構時,總是借助編程語言所提供的數(shù)據(jù)類型來描述數(shù)據(jù)的存儲結構。同時,做好課程設計
9、更能體現(xiàn)出同學的學習態(tài)度,對于新知識的渴望與追求,能夠反映出同學對自己負責任的態(tài)度。五、參考文獻1 嚴蔚敏,吳偉民,數(shù)據(jù)結構,北京:清華大學出版社,2006年2蘇小紅,C語言程序設計(第3版)2015年六、附錄#include<stdio.h>#include<stdlib.h>typedef struct Jonse/*定義結構體*/int code;/*編號(分配位置)*/struct Jonse *next;jonse;jonse * Create(int n);void ShowList(Jonse *);void Out(Jonse *,int,int,int
10、);int flag,num;/*主函數(shù)*/main()Jonse *head;int val,beg,huo;flag=0;printf("n請輸入游客總人數(shù):");scanf("%d",&num);head=Create(num);ShowList(head);printf("n請輸入報數(shù)的人所在位置:");scanf("%d",&beg);printf("n請輸入報數(shù)最大值:");scanf("%d",&val);printf("n請輸
11、入留下的人數(shù):");scanf("%d",&huo);printf("n將被扔下大海的游客的編號:n");Out(head,beg,val,huo);return 0;jonse * Create(int n)/*建立n個節(jié)點的單向循環(huán)鏈表函數(shù)*/Jonse *h,*p;int i;h=(Jonse *)malloc(sizeof(Jonse);/*為頭結點分配空間*/p=h;for(i=1;i<=n;i+)/*建立n個節(jié)點的單向鏈表*/p->code=i;if(i<n)p->next=(Jonse *)mall
12、oc(sizeof(Jonse);/*創(chuàng)建新節(jié)點*/p=p->next;p->next=h;/*返回頭結點,完成單向循環(huán)鏈表的建立*/return h;void ShowList(Jonse *h)/*打印鏈表函數(shù)*/Jonse *p;p=h;doprintf("%dt",p->code);p=p->next;while(p!=h);void Out(Jonse *h,int i,int d,int s)/*出隊函數(shù)*/int c;c=s;Jonse *p,*q;int k;p=h;for(q=h;q->next!=h;q=q->next);/*初始化鏈表*/for(k=1;k<i;k+)/*次循環(huán)功能:設置好開始報數(shù)的人所在位置*/q=p;p=p->next;while(p!=p->next)/*循環(huán)刪除隊列結點*/for(k=1;k<d;k+)/*數(shù)數(shù)*/q=p;p=p->next;printf("%d ",p->code);/*輸出被踢節(jié)點的位置*/q->next=p->next;free(p);/*釋放被踢出的結點*/p=NULL;/*讓p指針賦值為空指針*/p=q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品銷售工作總結(15篇)
- 民族代表人士活動方案
- 櫻花粘土活動方案
- 母嬰孕婦活動方案
- 正規(guī)別墅裝修活動方案
- 植樹節(jié)夢幻花園活動方案
- 母親節(jié)大學生活活動方案
- 模擬招聘會活動方案
- 油庫勞動活動方案
- 正畸沙龍活動方案
- 2022-2023學年廣西北海市七年級(下)期末地理試卷(含解析)
- 醫(yī)院戰(zhàn)略管理如何制定醫(yī)院戰(zhàn)略規(guī)劃講座
- 部編版語文二年級下冊第4單元童心童趣大單元整體作業(yè)設計
- SYB創(chuàng)業(yè)培訓游戲模塊2課件
- 娛樂場所文明服務責任書
- 獸醫(yī)傳染病學(山東聯(lián)盟)智慧樹知到答案章節(jié)測試2023年青島農(nóng)業(yè)大學
- 鋼結構防腐油漆施工方案
- 第五講社會建設
- GB/T 35273-2020信息安全技術個人信息安全規(guī)范
- GB/T 20303.1-2006起重機司機室第1部分:總則
- GB 18068-2000水泥廠衛(wèi)生防護距離標準
評論
0/150
提交評論