數(shù)據(jù)結(jié)構(gòu)約瑟夫環(huán)實(shí)驗(yàn)報(bào)告(共11頁).doc
《數(shù)據(jù)結(jié)構(gòu)約瑟夫環(huán)實(shí)驗(yàn)報(bào)告(共11頁).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)約瑟夫環(huán)實(shí)驗(yàn)報(bào)告(共11頁).doc(11頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)約瑟夫環(huán)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián)網(wǎng)1班學(xué)號:姓名:劉沛航一、 實(shí)驗(yàn)?zāi)康?1、熟悉VC環(huán)境,學(xué)習(xí)使用C語言利用鏈表的存儲結(jié)構(gòu)解決實(shí)際的問題。2、在編程、上機(jī)調(diào)試的過程中,加深對線性鏈表這種數(shù)據(jù)結(jié)構(gòu)的基本概念理解。3、鍛煉較強(qiáng)的思維和動(dòng)手能力和更加了解編程思想和編程技巧。二、實(shí)驗(yàn)內(nèi)容 1、 采用單向環(huán)表實(shí)現(xiàn)約瑟夫環(huán)。請按以下要求編程實(shí)現(xiàn): 從鍵盤輸入整數(shù)m,通過create函數(shù)生成一個(gè)具有m個(gè)結(jié)點(diǎn)的單向環(huán)表。環(huán)表中的結(jié)點(diǎn)編號依次為1,2,m。 從鍵盤輸入整數(shù)s(1<=s<=m)和n,從環(huán)表的第s個(gè)結(jié)點(diǎn)開始計(jì)數(shù)為1,當(dāng)計(jì)數(shù)到第n
2、個(gè)結(jié)點(diǎn)時(shí),輸出該第n結(jié)點(diǎn)對應(yīng)的編號,將該結(jié)點(diǎn)從環(huán)表中消除,從輸出結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)開始重新計(jì)數(shù)到n,這樣,不斷進(jìn)行計(jì)數(shù),不斷進(jìn)行輸出,直到輸出了這個(gè)環(huán)表的全部結(jié)點(diǎn)為止。例如,m=10,s=3,n=4。則輸出序列為:6,10,4,9,5,2,1,3,8,7。三、程序設(shè)計(jì) 1、概要設(shè)計(jì)為了解決約瑟夫環(huán)的問題,我們可以建立單向環(huán)表來存儲每個(gè)人的信息(該人的編號以及其下一個(gè)人的編號),及結(jié)點(diǎn),人后通過查找每個(gè)結(jié)點(diǎn),完成相應(yīng)的操作來解決約瑟夫問題。(1) 抽象數(shù)據(jù)類型定義 ADT Joh數(shù)據(jù)對象:D=數(shù)據(jù)關(guān)系:R1=基本操作:create(&J, n)操作結(jié)果:構(gòu)造一個(gè)有n個(gè)結(jié)點(diǎn)的單向環(huán)表J。sh
3、ow(J)初始條件:單向環(huán)表J已存在。操作結(jié)果:按順序在屏幕上輸出J的數(shù)據(jù)元素。calculate( J,s,n)初始條件:單向環(huán)表J已存在,s>0,n>0,s<環(huán)表結(jié)點(diǎn)數(shù)。操作結(jié)果:返回約瑟夫環(huán)的計(jì)算結(jié)果。ADT Joh(2)宏定義#define NULL 0 #define OK 1#define ERROR -1 (3)主程序流程開始輸入數(shù)據(jù)(m,s,n)創(chuàng)建環(huán)表輸出建立好的環(huán)表計(jì)算處理輸出結(jié)果結(jié)束(4) 模塊調(diào)用關(guān)系程序分為下述模塊:1)主函數(shù)模塊執(zhí)行輸入調(diào)用其他的功能函數(shù) 2)創(chuàng)建環(huán)表模塊創(chuàng)建單向環(huán)表 3)計(jì)算處理模塊計(jì)算出要出列的標(biāo)號并輸出 4)顯示模塊輸出建立好
4、的環(huán)表 調(diào)用關(guān)系如下: 主函數(shù)模塊 創(chuàng)建環(huán)表模塊 顯示模塊 計(jì)算處理模塊 2、詳細(xì)設(shè)計(jì)(1)數(shù)據(jù)類型設(shè)計(jì)typedef int ElemType; /元素類型typedef struct ElemType data;struct Joh *next;Joh, *LinkList,*p; /結(jié)點(diǎn)類型,指針類型(2)操作算法Status create(LinkList &J,int n)/創(chuàng)建一個(gè)有n個(gè)結(jié)點(diǎn)的單向環(huán)表if(n<=0)return ERROR;/n<0錯(cuò)誤J=(LinkList)malloc(sizeof(J);J->data=1;J->next=J;
5、/建立第一個(gè)結(jié)點(diǎn)for(int i=n;i>1;-i)p=(LinkList)malloc(sizeof(J);p->data=i;p->next=J->next;J->next=p;/插入到表頭return OK;/create void show(LinkList J)/主要的操作函數(shù)/順序輸出環(huán)表J的結(jié)點(diǎn)p=J;printf("%d ",p->data);p=p->next;while(p!=J) /循環(huán)終止條件printf("%d ",p->data);p=p->next;/showvoid
6、calculate(LinkList J,int s,int n)p=J;Joh *head=p; /聲明結(jié)點(diǎn)while(p->data!=s)p=p->next;head=p;/尋找起始結(jié)點(diǎn)while(p->next!=p) /終止條件for(int i=0;i<n-1;i+)head=p; /保存前置節(jié)點(diǎn)p=p->next;printf("%d ",p->data);head->next=p->next; /刪除已輸出結(jié)點(diǎn)p=head->next;if(n!=1)printf("%dn",p-&g
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 約瑟夫 實(shí)驗(yàn) 報(bào)告 11
鏈接地址:http://zhizhaikeji.com/p-6397348.html