資源描述:
《數據結構報告約瑟夫環(huán)畢設論文.doc》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、課程設計報告課程設計名稱:數據結構課程設計課程設計題目:約瑟夫環(huán)院(系):電信學院專業(yè):計算機應用科學目錄1課程設計介紹11.1課程設計內容11.2課程設計要求12課程設計原理22.1課設題目粗略分析22.2原理圖介紹32.2.1功能模塊圖32.2.2流程圖分析43數據結構分析73.1存儲結構................................................................................73.2算法描述74調試與分析94.1調試過程94.2程序執(zhí)行過程10
2、參考文獻15附錄(關鍵部分程序清單)16201課程設計介紹1.1課程設計內容設計程序,系統(tǒng)主要功能如下:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)。開始任選一個正整數作為報數上限值m,從第一個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下一個人開始重新從1報數,如此下去,直至所有人全部出列為止。試設計一個程序求出出列順序。1.2課程設計要求1.參考相應的資料,獨立完成課程設計任務書。2.交規(guī)范課程設計報告和軟件代碼。2
3、02課程設計原理2.1課設題目粗略分析根據課設題目要求,擬將整體程序分為四大模塊。此四個模塊相互獨立,沒有嵌套調用的情況,以下是四個模塊的大體分析:1.main()函數是主要的控制函數,main()函數主要負責存儲用戶輸入的基本數據以及調用其他子函數模塊,在main()函數中還存在一個比較小的函數模塊exit(0),該函數模塊負責終止程序運行,另外還有兩個子函數模塊,分別是random()函數模塊與solid()函數模塊,這兩個函數模塊分別各自負責自己所要處理的數據以及輸出功能;2.在程序運行之后,在程序主界面出現之后
4、,當用戶自己輸入了自己想要實現的功能模塊所在的數字選項后,立即進入主函數模塊之中,當用戶輸入了所有的必要數據之后,按照用戶選定的數字選項所要實現的功能調用相應的子函數;3.如果用戶選擇的是系統(tǒng)隨機產生密碼的選項,則main()函數就調用random()子函數模塊,在random()函數模塊中,將會隨機產生各個參與者的密碼,并且同時建立鏈表來存儲、處理這些數據,在完成了所有的操作之后,random()函數就將輸出結果,反之,如果用戶選擇的是用戶自己輸入密碼的選項,則main()函數就調用solid()函數模塊,在soli
5、d()函數模塊中,將會提醒用戶自己一個個的輸入每個參與者的密碼,與此同時建立鏈表來存儲、處理這些數據,在完成了所有的操作之后,solid()函數就將輸出結果。202.2原理圖介紹2.2.1功能模塊圖用戶輸入數據random()函數模塊來隨機產生參與者的密碼,并且存儲、處理這些數據,之后輸出它們exit(0)函數負責終止程序運行solid()函數模塊來提示用戶輸入密碼并且存儲、處理這些數據,之后輸出結果根據程序啟動時用戶所選的數字選項,main()函數來調用相應的子函數模塊圖2.1功能模塊圖202.2.2流程圖分析1.如
6、圖2.2,random()函數的執(zhí)行過程如下;開始輸入第一個報的數key及系統(tǒng)隨機產生各個參與者的密碼n==0報數過程NY輸出出列者的編號及密碼結束n--圖2.2random()函數流程圖202.如圖2.3,solid()函數的執(zhí)行過程如下;開始用戶輸入各個參與者的密碼及第一個要報的數keyn==0N報數過程Y輸出出列者的編號及密碼n--結束圖2.3solid()函數流程圖203.如圖2.4,main()函數的執(zhí)行過程如下。開始輸入總人數n創(chuàng)建并初始化n個節(jié)點輸入第一個要報的數keyn==0N報數過程Y輸出出列者的編號
7、及密碼結束n--圖2.4main()函數流程圖203數據結構分析3.1存儲結構numcodenext圖3.1數據存儲結構3.2算法描述1.用戶輸入數據;while(scanf("%d",&p)!=EOF){if(p==1)random();elseif(p==2)solid();elseexit(0);printf("*************************歡迎進入約瑟夫環(huán)問題求解系統(tǒng)*************************");printf("1.按照系統(tǒng)隨機給出的密碼進行2.按照自己輸入
8、的密碼進行3.退出該系統(tǒng)");printf("********************請輸入您要實現的功能模塊所在的數字選項!********************");}2.random()函數隨機產生各個參與者的密碼,用戶在此函數中輸入第一個要報的數,此函數之后會排好各個參與者的出列順序;or(i=1;i<=