數據結構實驗 約瑟夫環(huán)_第1頁
數據結構實驗 約瑟夫環(huán)_第2頁
數據結構實驗 約瑟夫環(huán)_第3頁
數據結構實驗 約瑟夫環(huán)_第4頁
數據結構實驗 約瑟夫環(huán)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗報告實驗名稱:約瑟夫環(huán)問題實驗類型:綜合性實驗班級:學號:姓名:實驗日期:2014.5.19問題描述設有編號為1,2,…,n的n(n>0)個人圍成一個圈,每個人持有一個密碼m。從第一個人開始報數,報到m時停止報數,報m的人出圈,再從他的下一個人起重新報數,報到m時停止報數,報m的出圈,……,如此下去,直到所有人全部出圈為止。當任意給定n和m后,設計算法求n個人出圈的次序。2.數據結構設計首先,設計實現約瑟夫環(huán)問題的存儲結構。由于約瑟夫環(huán)問題本身具有循環(huán)性質,考慮采用循環(huán)鏈表,為了統(tǒng)一對表中任意結點的操作,循環(huán)鏈表不帶頭結點。將循環(huán)鏈表的結點定義為如下結構類型:typedefstructLNode { intM;LNode*next; } Lnode;3.算法設計(1)建立一個循環(huán)鏈表LNode*create_l(intn){ LNode*L,*p; inti; L=(LNode*)malloc(sizeof(LNode)); L->M=1; L->next=L; for(i=n;i>1;i--) { p=(LNode*)malloc(sizeof(LNode)); p->M=i; p->next=L->next; L->next=p; } returnL; }依次刪除第m個結點,并輸出該節(jié)點的序號intDele(LNode*L,intm){LNode*p,*pre; intj; p=L; pre=L; while(pre->next!=L) pre=pre->next; while(p!=p->next) { for(j=1;j<m;j++) { pre=p; p=p->next; } printf("%d",p->M); pre->next=p->next; free(p); p=pre->next; } printf("%d",pre->M); free(pre); }主函數intmain() { LNode*first; intm,n; printf("Pleaseinputn:"); scanf("%d",&n); printf("Pleaseinputm:"); scanf("%d",&m); create_l(n); first=create_l(n); printf("thedeletenumberis:"); Dele(first,m);}4.程序代碼#include<stdio.h>#include<malloc.h>typedefstructLNode { intM;LNode*next; }LNode; LNode*create_l(intn){ LNode*L,*p; inti; L=(LNode*)malloc(sizeof(LNode)); L->M=1; L->next=L; for(i=n;i>1;i--) { p=(LNode*)malloc(sizeof(LNode)); p->M=i; p->next=L->next; L->next=p; } returnL; }intDele(LNode*L,intm){LNode*p,*pre; intj; p=L; pre=L; while(pre->next!=L) pre=pre->next; while(p!=p->next) { for(j=1;j<m;j++) { pre=p; p=p->next; } printf("%d",p->M); pre->next=p->next; free(p); p=pre->next; } printf("%d",pre->M); free(pre); }intmain() { LNode*first; intm,n; printf("Pleaseinputn:"); scanf("%d",&n); printf("Pleaseinputm:"); scanf("%d",&m); create_l(n); first=create_l(n); printf("thedeletenumberis:"); Dele(first,m);} 5.運行、測試與分析(1)、運行,例如n=5,m=3得出結果實驗收獲及思考考慮不太周全,剛開始沒有考慮到只有一個人或者密碼是1的情況,以后寫程序要考慮周到。而且之前學習的都是算法,這是第一次寫數據結構的實驗。真正第一次將自己的算法用C語言表達并運行出來。所以,紙上學來終覺淺,只有真正實踐過才會了解。思考:采用順序存儲結構如何實現約瑟夫環(huán)問題?建立一個長度為n的順序表,依次刪除第n個元素,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論