資料結構實習報告

2021-09-27 11:38:50 字數 1998 閱讀 7402

實習報告

題目:編制解決約瑟夫環問題的程式

班級:09052713

姓名:張靜

學號:09052304

完成日期:2010.11.20

一. 需求分析

1. 利用單向迴圈鍊錶儲存結構模擬此過程,按照出列的順序印出各人的編號。

2. 演示程式以使用者和計算機的對話方式執行,即在計算機上顯示「提示資訊」之後,由使用者在鍵盤上輸入演示程式中規定的運算命令;相應的輸入資料(濾去輸入中的非法字元)和運算結構顯示在其後。

3. 程式執行的命令包括:

1) 輸入報數上限值;2)輸入人數以及所持密碼;3)輸出出列順序;4)結束

4. 測試資料

m初值為20;n=7;七個人的密碼依次為:3,1,7,2,4,8,4,首先m的值為6(正確的出列順序應為6,1,4,7,2,3,5.

二. 概要設計

為實現上述程式功能,需建立單向迴圈鍊錶以儲存此結構。為此,需要乙個抽象資料結構型別。

1. 鍊錶結點的抽象資料型別定義為:

adt2. 本程式包含三個模組:

1) 主程式模組;

2) 迴圈鍊錶的建立模組——實現建立迴圈鍊錶;

3) 出列操作的模組——實現最終的出列操作;

各模組之間的呼叫關係如下:

出列操作的模組<——主程式模組——>迴圈鍊錶的建立模組

三. 詳細設計

1. 元素型別,結點型別和指標型別

struct lnode

;typedef struct lnode *linklist;

2. 子函式1,建立迴圈鍊錶

int creatlist_l(linklist &head,int n)

程式的實現:

int creatlist_l(linklist &head,int n)

p->next=head;//構成迴圈鍊錶,並返回鍊錶的頭指標

return 0;

}3. 子函式2,依次出列,並釋放結點的空間

void deletenode(linklist head,int m,int n)

程式的實現:

void deletenode(linklist head,int m,int n)

printf("%d",p->number);//最後乙個人出列,並釋放其結點所佔空間;

free(p);

}4. 主函式的實現,對兩個子函式的呼叫

void main()

5. 函式的呼叫關係圖反映了演示程式的層次結構:

main——>creatlist;

main——>deletenode;

四除錯分析

1. 由於對引用呼叫理解的不透側,導致剛開始修改了很長時間。今後要注重這些細節方面。

2. 本程式的模組劃分比較合理,共三個函式,且盡可能將指標的操作封裝在結點和鍊錶的模組中,並通過引用呼叫來返回頭指標。並合理的釋放了所申請的空間,變數也比較少,比較容易理解。

3. 演算法的時空分析

1)鍊錶採用了帶頭結點的迴圈鍊錶,各種操作的演算法時間複雜度比較合理。函式1和函式2通過乙個head指標連線。

2)基於有序鍊錶實現的有序集的各種運算和操作的時間複雜度分析如下:

出列操作模組中,讀入元素為n,迴圈n次,時間複雜度是o(n*n).

4. 本實習作業採用資料抽象的程式設計方法,將程式劃分為三個層次結構,使得設計時思路清晰,實現時除錯順利,確實得到了一次良好的程式設計訓練。

五.使用者手冊

1. 執行,按螢幕提示輸入人數n;

2. 按螢幕提示輸入報數上限的初值m;

3. 按螢幕提示依次輸入第1個人到第n個人的password;

4. 回車顯示n個人的出列順序;

5. press any key to continue,退出。

六.測試結果

輸入人數:7

輸入值m:20

請一次輸入各位密碼:3,1,7,2,4,8,4

6->1->4->7->2->3->5

七.附錄

#include

資料結構實習報告

接著猜的人再根據出題者的幾a幾b繼續猜,直到猜中為止。次數限制 有的時候,這個遊戲有猜測次數上的限制。根據計算機測算,這個遊戲,如果以最嚴謹的計算,任何數字可以在7次之內猜出。而有些地方把次數限制為6次或更少,則會導致有些數可能猜不出來。而有些地方考慮到人的邏輯思維難以達到計算機的那麼嚴謹,故設定為...

資料結構實習報告

報告題目 文學研究助手 班級 業計算10專本 姓名 xx 完成日期 2011 5 15 一 問題描述 文學研究人員需要統計某篇英文 中某些形容詞的出現次數和位置。試寫乙個實現這一目標的文字統計系統,稱為 文學研究助手 英文 存於乙個文字檔案中。待統計的詞彙集合要一次輸入完畢,即統計工作必須在程式的一...

資料結構實習報告

實習報告 題目 運動會分數統計 班級 計算機學院031021班姓名 雷凱躍學號 03102013 一 需求分析 1.在該程式中,參賽學校編號為1 n n 20 比賽分成m m 30 個男子專案和w w 20 個女子專案,分別編號為1 m和m 1 m w,姓名長度不超過20個字元 2.輸入各個專案資訊...