資料結構與演算法專題實驗報告

2022-03-14 10:59:38 字數 2589 閱讀 4562

目錄附錄a:報告格式 1

第一部分題目 3

第1題約瑟夫環 3

1 題目 3

2 目標 3

3 設計思想 3

4 演算法描述 4

5 程式流程圖 5

6 源程式 5

第2題大數階乘 9

1 題目 9

2 目標 9

3 設計思想 9

4 演算法描述 10

5 程式流程圖 11

6 源程式 11

第3題圖的遍歷 13

1 題目 13

2 目標 13

3 設計思想 13

4 演算法描述 14

5 程式流程圖 15

6 源程式 15

第4題最短路徑 19

1 題目 19

2 目標 19

3 設計思想 19

4 演算法描述 20

5 程式流程圖 21

6 源程式 23

第二部分體會與建議 27

1體會與收穫 27

2建議與意見 28

用迴圈鍊錶實現約瑟夫(yoseph)環

整數)開始任選乙個正整數作為報數值m,自第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他持有的密碼作為新的m值,從他的順時針方向的下乙個人開始重新從1報數,如此下去,直至所有的人全部出列為止。編寫完整的程式求出出列的順序。

1.輸入:從鍵盤輸入人數n,n個人的密碼以及初始m值。輸入時應有提示,並有糾錯措施。

2.輸出:輸出結果寫入檔案,包括n、n個密碼、m和出列順序。

1. 用單鏈表的資料結構實現約瑟夫環。

2. 建立單鏈表預設第i個結點的序號為i,獲得第i個結點的資料(第個人的密碼,並使其具有糾錯功能, 用while 語句判斷所輸入的結點總數與第個個結點的資料是否在允許的範圍內,如果在,則繼續下去,如果不在,則返回重新輸入。

3. 約瑟夫環中人員相繼有規律的出列其實質是在單鏈表中連續刪除結點直至剩餘最後乙個結點,當然它還滿足一定的條件,那就是每刪除乙個結點後,下乙個待刪除的結點是從刪除的結點的下乙個結點開始計數,數到刪除的結點的資料時,再次刪除結點。

4.用檔案輸出則直接呼叫檔案讀取函式即可實現檔案輸出。

step1:定義單鏈表資料結構;

step2: creat( )函式 //建立但鍊錶,預設第i個結點的序號為i;

a. 輸入總的結點數n,,並判斷其是否在允許的範圍內,如果不在,則返回,重新輸入;

b. for(i step3: disp(yoseph* l) //出列函式,實現題設要求

while(p的下已個結點不是p)

if(初始密碼為1)則輸出第i個結點,帶回p->code並刪除該結點,p=p->next

else,從第i個結點計數,數到第m個結點,帶回p->code並刪除該結點,p=p->next;

} step4: fopen("","w")實現檔案的輸出;

step5: 主函式

// 用迴圈鍊錶實現yoseph環:

#include<> //實現檔案輸出的標頭檔案

#include<>

#include<>

#define num 50

static int a[num]; // 用來存放人數和初始密碼值及出隊序列

int j=2,n;

struct yoseph定義單鏈表資料結構

;yoseph* creat建立單鏈表

a[j]=p->code;

j++;

for(i=2;i<=n;++i)

a[j]=q->code;

j++;

}p->next=l;

return l;

} void disp(yoseph* l輸出出隊序列

else

printf("%3d",p->num);

a[j++]=p->num;

q->next=p->next;

m=p->code帶回被刪除的結點的資料,即出列的人手中的密碼

p=p->next;

}}printf("%3d",p->num);

printf("\n");

a[j]=p->num

printf("出列完畢!");

printf("\n");

}void main主函式

{ int j;

yoseph * l;

file *fpt;

l=creat( );

disp(l);

fpt=fopen("","w呼叫檔案輸出語句,實現將結果存放在名為的檔案當中

fprintf(fpt,"總人數為:");

fprintf(fpt,"%3d\n",a[0]);

fprintf(fpt,"初始密碼為:");

fprintf(fpt,"%3d\n",a[1]);

fprintf(fpt,"\n");

fprintf(fpt,"前%d個為密碼,後%d個為出列人序號:",a[0]);

資料結構與演算法專題實驗報告

資料結構 建立乙個具有n n 1 個頂點的無向圖的鄰接矩陣,並對其按照 深度優先搜尋 和 廣度優先搜尋 方法進行遍歷。1.編寫c程式予以實現。2.程式要求能輸入圖的頂點數 邊數以及邊的關係,並自動生成鄰接矩陣。3.結果輸出鄰接矩陣和遍歷的路徑。4.熟悉無向圖的兩種遍歷演算法。考慮用乙個n維陣列來存放...

演算法與資料結構實驗報告

學生實驗報告冊 課程名稱 演算法與資料結構 實驗專案名稱 順序表實驗學時 2 同組學生姓名實驗地點 工科樓a205 實驗日期 2013年10月16日實驗成績 批改教師批改時間 實驗1 順序表 一 實驗目的和要求 掌握順序表的定位 插入 刪除等操作。二 實驗儀器和裝置 turbo c 2.0 三 實驗...

資料結構與演算法實驗報告

實驗名稱 線性表的應用指導教師 余文春 實驗日期 2014年月日實驗地點 北503 成績 實驗目的 1 掌握線性表及其順序儲存與鏈式儲存結構的概念。2 掌握兩種儲存方式的基本運算 實現方法和技術。3 靈活應用線性表進行程式設計,解決實際問題。實驗內容 約瑟夫 joseph 問題的一種描述是 編號為1...