資料結構課程設計報告

2021-04-12 21:45:13 字數 2913 閱讀 5507

課程設計報告

課程名稱資料結構

課題名稱生死者遊戲

專業資訊管理與資訊系統

班級學號

姓名指導教師

2011 年 1 月 20 日

湖南工程學院

課程設計任務書

課程名稱資料結構

課題生死者遊戲

專業班級

學生姓名

學號指導老師

審批任務書下達日期 2011 年 1 月 3 日

任務完成日期 2011 年 1 月 20 日

一、設計內容與設計要求

1.設計內容:

[問題描述] 每n(n>k)個旅客同乘一條船,因為嚴重超載,加上風高浪大,危險萬分,因此船長告訴乘客,只有將全船一半的旅客投入海中,其餘人才能倖免遇難。無奈,大家只得同意這種辦法,並擬定n個人圍城一圈,由第乙個人數起,依次報數,數到第k人,便把他投入大海中,然後再從他的下乙個人數起,數到第k人,再將他扔進大海中,如此迴圈地進行,直至剩下n/2個乘客為止。問哪些位置是將被扔進大海的位置。

[基本功能]

(1)實時顯示每仍乙個旅客之前,按序號從小到大的順序顯示當前在船上的旅客的編號。

(2)變換n和k的值,看顯示結果是否仍然正確。

2.設計要求:

1).設計正確,方案合理。

2).介面友好,使用方便。

3).程式精煉,結構清晰。

4).設計報告以上,含程式設計說明、系統的功能框圖、流程圖、源程式清單等。

5).實際操作過程中遇到的問題及解決方法:設計總結及心得體會。

6).上機演示。

二、進度安排

第 19 周星期一 8時:00分——11時:30分

星期二 8時:00分——11時:30分

星期三 14時:00分——17時:30分

星期四 14時:00分——17時:30分

星期五 8時:00分——11時:30分

第 20 周星期一 8時:00分——11時:30分

目錄1 課題系統主要功能分析 1

1.1 設計內容 1

1.2 設計思路 1

1.3 資料結構 1

2 總體設計 2

3 主要演算法及模組流程圖 3

3.1 主要演算法 3

3.2 刪除模組 5

3.3 查詢模組 6

4 詳細設計 7

4.1 結構體定義 7

4.2 主函式 7

4.3 單鏈表的建立 8

4.4 輸出船員資訊 9

4.5 船員的刪除 10

4.6 查詢模組 11

5 系統除錯及執行結果 14

5.1 程式除錯中的問題 14

5.2 程式執行結果 16

6 心得體會 18

7 附件 20

7.1程式源** 20

7.2參考文獻 25

8 評分表 26

[問題描述] 每n(n>k)個旅客同乘一條船,因為嚴重超載,加上風高浪大,危險萬分,因此船長告訴乘客,只有將全船一半的旅客投入海中,其餘人才能倖免遇難。無奈,大家只得同意這種辦法,並擬定n個人圍城一圈,由第乙個人數起,依次報數,數到第k人,便把他投入大海中,然後再從他的下乙個人數起,數到第k人,再將他扔進大海中,如此迴圈地進行,直至剩下n/2個乘客為止。問哪些位置是將被扔進大海的位置。

本遊戲的數學建模如下:假設m個旅客排成乙個環形,依次順序編號1,2,…,n。從某個指定的第1號開始,沿環計數,每數到第k個人就讓其出列,且從下乙個人開始重新計數,繼續進行下去。

這個過程一直進行到剩下m/2個旅客為止。

本遊戲的要求使用者輸入的內容包括:

1. 旅客的個數,也就是m的值;

2. 離開旅客的間隔數,也就是k的值;

3. 所有旅客的序號作為一組資料要求存放在某種資料結構中。

本遊戲要求輸出的內容是包括

1. 離開旅客的序號;

2. 剩餘旅客的序號;

所以,根據上面的模型分析及輸入輸出引數分析,可以定義一種資料結構後進行演算法實現。

為了解決這一問題,可以用長度為30的陣列作為線性儲存結構,並把該陣列看成是乙個首尾相接的環形結構,那麼每投入大海乙個乘客,就要在該陣列的相應位置做乙個刪除標記,該單元以後就不再作為計數單元。這樣做不僅演算法較為複雜,而且效率低,還要移動大量的元素。用單迴圈鍊錶解決這一問題,實現的方法相對要簡單得多。

首先要定義鍊錶結點,單迴圈鍊錶的結點結構與一般的結點結構完全相同,只是資料域用乙個整數來表示位置;然後將它們組成具有30個結點的單迴圈鍊錶。接下來從位置為1的結點開始數,數到第8個結點,就將下乙個結點從迴圈鍊錶中刪去,然後再從刪去結點的下乙個結點開始數起,數到第8個結點,再將其下乙個結點刪去,如此進行下去,直到剩下15個結點為止。

本程式實行了對生死者遊戲的操作,其系統功能模組如圖所示;

圖2.1系統功能模組

為了不失一般性,將30改為乙個任意輸入的正整數m,而報數上限也為乙個任選的正整數k。這樣該演算法描述如下:

(1) 建立含有m個結點的單迴圈鍊錶;

建立乙個有m個船員的陣列a[m],且每個成員都初始化為0。

(2) 生著與死者的選擇:

p, q指向鍊錶的第乙個結點head,初始j置為1;

while(m>m/2) //刪除一半的結點

{ if(k==1)

else

(3) 查詢系統

1---按船員進行查詢資訊

2---按照扔的次序進行查詢資訊

(4)輸出船上的船員

圖3.1 刪除模組

圖3.2 查詢模組

在c語言中,可以定義結構體型別,將多個相關的變數包裝成為乙個整體使用。在結構體中的變數,可以是相同、部分相同,或完全不同的資料型別。這裡定義乙個gnode結構體,裡面包括船員的號碼值number,也包括鍊錶的下乙個結點的指標。

資料結構課程設計報告

交通諮詢系統設計 不用輸入程式語句,也不用那個截圖 不用太著急,報告周五之前給我就行了 列印和壓縮包都要哈!對了,這段文字記得刪掉啊嘿嘿 題目名稱交通諮詢系統設計 院 系 管理學院 課程名稱資料結構課程設計 班級資訊 10 2 學生姓名呂德麗 指導教師李長雲 目錄一 需求分析及選題要求 3 1 問題...

《資料結構》課程設計報告

1.1 要求 1.2 題目分析 1.3相關 1.4執行結果 1.5總結 2.1 要求 2.2 題目分析 2.3相關 2.4執行結果 2.5總結 3.1 要求 3.2 題目分析 3.3相關 3.4執行結果 3.5總結 4.1 要求 4.2 題目分析 4.3相關 4.4執行結果 4.5總結 1 可以錄入...

資料結構課程設計報告

演算法與資料結構 課程設計報告 題目 班級 學號 姓名 成績 年月日一 題目 宋體,三號加粗 正文用五號楷體 抄寫一遍題目 二 設計思想 宋體,三號加粗 正文用五號楷體 將如何設計程式思想步驟以及一些必要的圖資料賦上如 校園導遊諮詢 要有校園平面圖 三 軟體結構圖及流程圖 宋體,三號加粗 正文用五號...