




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、(規(guī)格為a4紙或a3紙折疊)佛山科學(xué)技術(shù)學(xué)院(用四號(hào)宋體)實(shí) 驗(yàn) 報(bào) 告(用小二號(hào)黑體)課程名稱 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn) 實(shí)驗(yàn)項(xiàng)目 實(shí)現(xiàn)dfs和bfs算法 專業(yè)班級(jí) 姓 名 學(xué) 號(hào) 指導(dǎo)教師 成 績(jī) 日 期 (用小四號(hào)宋體) 一、目的與要求1、通過(guò)本實(shí)驗(yàn),掌握?qǐng)D,無(wú)向圖的基本概念,掌握?qǐng)D的遍歷。 2、掌握?qǐng)D的深度優(yōu)先搜索(dfs)與廣度優(yōu)先搜索(bfs)算法。二、實(shí)驗(yàn)原理圖的遍歷是圖的算法中一種非常重要的算法,通過(guò)建立圖的存儲(chǔ)結(jié)構(gòu),采用深度優(yōu)先搜索與廣度優(yōu)先搜索算法可以進(jìn)行圖的遍歷。廣度優(yōu)先遍歷與深度優(yōu)先遍歷的區(qū)別在于:廣度優(yōu)先遍歷是以層為順序,將某一層上的所有節(jié)點(diǎn)都搜索到了之后才向下一層搜索;而深度優(yōu)
2、先遍歷是將某一條枝椏上的所有節(jié)點(diǎn)都搜索到了之后,才轉(zhuǎn)向搜索另一條枝椏上的所有節(jié)點(diǎn)。三、實(shí)驗(yàn)步驟1建立圖的存儲(chǔ)結(jié)構(gòu)。2輸入圖的基本接點(diǎn)與信息,完成初始化圖的工作。3完成圖的深度優(yōu)先搜索(dfs)和廣度優(yōu)先搜索算法,可以采用菜單形式進(jìn)行顯示與選擇。(可以在鍵盤(pán)輸入邊的信息以構(gòu)建一個(gè)無(wú)向圖。以(a,b)的形式輸入邊的信息;對(duì)此無(wú)向圖進(jìn)行深度優(yōu)先搜索,并輸出正確的序列。)4、 源代碼#include #include #define max 20int visitedmax;struct queue/隊(duì)列的結(jié)構(gòu)體int *head;/指向所申請(qǐng)得到的空間的首地址int *front;/頭指針,若隊(duì)列不
3、為空,指向隊(duì)列頭元素int *rear;/尾指針,若隊(duì)列不空,指向隊(duì)列尾元素的下一個(gè)位置int stacksize;/當(dāng)前已分配的存儲(chǔ)空間s;/-圖的數(shù)組存儲(chǔ)表示-struct mgraphchar vexsmax;int arcsmaxmax;int vexnum,arcnum;g;int locatevex(char v)/確定v在g中的位置int i,t;for(i=0;ig.vexnum;i+)if(g.vexsi=v) t=i;return(t);/-采用數(shù)組表示法,構(gòu)造無(wú)向圖g-void createudg()int i,j,k;char v1,v2;printf(請(qǐng)輸入頂點(diǎn)數(shù)和弧
4、數(shù):);scanf(%d,%d,&g.vexnum,&g.arcnum);fflush(stdin);printf(請(qǐng)輸入%d個(gè)頂點(diǎn)n,g.vexnum);for(i=0;ig.vexnum;i+)printf(請(qǐng)輸入頂點(diǎn)%d: ,i);scanf(%c,&g.vexsi);fflush(stdin);for(i=0;ig.vexnum;i+)for(j=0;jg.vexnum;j+) g.arcsij=0;printf(請(qǐng)輸入%d條弧n,g.arcnum);for(k=0;kg.arcnum;k+)printf(請(qǐng)輸入弧%d: ,k);scanf(%c,%c,&v1,&v2);fflush(
5、stdin);i=locatevex(v1);j=locatevex(v2);g.arcsij=1;g.arcsji=1;/-返回v的第一個(gè)鄰接頂點(diǎn)-int firstadjvex(int v)int i; for(i=0;ig.vexnum;i+)if(g.arcsvi=1) return(i);i=-1;return(i);/-返回v的(相對(duì)于w的)下一個(gè)鄰接頂點(diǎn)-int nextadjvex(int v,int w)int i;for(i=0;iw) return(i);i=-1;return(i);/-從第v個(gè)頂點(diǎn)出發(fā)遞歸地深度優(yōu)先遍歷圖g-void dfs(int v) int w;
6、visitedv=1;printf(%c ,g.vexsv);for(w=firstadjvex(v);w=0;w=nextadjvex(v,w)if(!visitedw) dfs(w);/-對(duì)圖g作深度優(yōu)先遍歷-void dfstraverse()int i;for(i=0;ig.vexnum;i+) visitedi=0;printf(深度優(yōu)先遍歷:);for(i=0;i=s.stacksize)/隊(duì)列滿,追加存儲(chǔ)空間s.head=(int *)realloc(s.head,(s.stacksize+10)*sizeof(int);if(!s.head) exit(0);/存儲(chǔ)分配失敗s.
7、stacksize+=10;*s.rear=e;s.rear+=1;void dequeue(int u)/若隊(duì)列不空,則刪除s的隊(duì)頭元素u=*s.front;s.front+=1;/-按廣度優(yōu)先非遞歸遍歷圖g-void bfstraverse()int v,u=0,w;for(v=0;vg.vexnum;v+) visitedv=0;initqueue();printf(廣度優(yōu)先遍歷:);for(v=0;v=0;w=nextadjvex(u,w)if(!visitedw)visitedw=1;printf(%c ,g.vexsw);enqueue(w);printf(n);void main
8、()int i; printf(*n);printf(1.創(chuàng)圖n2.深度優(yōu)先搜索n3.廣度優(yōu)先搜索n4.退出n); printf(*n);printf(請(qǐng)選擇要操作的選項(xiàng):);scanf(%d,&i);switch(i) case 1:createudg();break;case 2:dfstraverse();break;case 3:bfstraverse();break;case 4:exit(0);main();5、 實(shí)驗(yàn)結(jié)果6、 思考題1圖的存儲(chǔ)方式有幾種?本實(shí)驗(yàn)中你會(huì)采用什么樣的存儲(chǔ)方式?答:圖的存儲(chǔ)方式有數(shù)組表示法、鄰接表、十字鏈表、鄰接多重表等4種常用存儲(chǔ)方式。本實(shí)驗(yàn)中我采用了
9、數(shù)組表示法存儲(chǔ)。 2、給出一幅無(wú)向圖g如下:v(g)=v1,v2,v3,v4,v5,v6,v7,v8 ,e(g)=(v1,v2),(vl,v3),(v2,v4),(v2,v5),(v3,v6),(v3,v7),(v1,v8),(v2,v8)1)請(qǐng)畫(huà)出示意圖;2)請(qǐng)根據(jù)你采用的存儲(chǔ)方式畫(huà)出存儲(chǔ)圖示; 3)在題目2的基礎(chǔ)上,請(qǐng)給出圖的深度優(yōu)先搜索序列;v1v4v24)在題目2的基礎(chǔ)上,請(qǐng)給出圖的廣度優(yōu)先搜索序列。v6 解:(1)v7v3v8v50 1 2 3 4 5 6 70 1 1 0 0 0 0 11 0 0 1 1 0 0 11 0 0 0 0 1 1 00 1 0 0 0 0 0 00 1 0 0 0 0 0 00 0 1 0 0 0 0 00 0 1 0 0 0 0 01 1 0 0 0 0 0 001234567 v1 v2 v3 v4 v5 v6 v7 v8 (2) (3)深度優(yōu)先搜索序列:a b d e h c f g (4)廣度優(yōu)先搜索序列:a b c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- OTN協(xié)議核心要點(diǎn)解析
- 2025年大學(xué)試題(醫(yī)學(xué))-醫(yī)學(xué)遺傳學(xué)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年大學(xué)試題(農(nóng)學(xué))-農(nóng)業(yè)微生物學(xué)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年衛(wèi)生資格(中初級(jí))-口腔內(nèi)科學(xué)主治醫(yī)師歷年參考題庫(kù)含答案解析(5套典型題)
- 2025年衛(wèi)生知識(shí)健康教育知識(shí)競(jìng)賽-全民健康信息化標(biāo)準(zhǔn)知識(shí)競(jìng)賽歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年醫(yī)學(xué)高級(jí)職稱-口腔頜面外科(醫(yī)學(xué)高級(jí))歷年參考題庫(kù)含答案解析(5套典型題)
- 2025年企業(yè)文化企業(yè)建設(shè)知識(shí)競(jìng)賽-保利物業(yè)第三屆服務(wù)技能大賽知識(shí)競(jìng)賽歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年業(yè)務(wù)知識(shí)崗位知識(shí)競(jìng)賽-中國(guó)人壽柜面業(yè)務(wù)知識(shí)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2024-2025學(xué)年北師大版四年級(jí)數(shù)學(xué)下學(xué)期期末必刷常考題之整數(shù)方程求解
- 企業(yè)期權(quán)協(xié)議書(shū)
- 宿舍樓建筑結(jié)構(gòu)設(shè)計(jì)
- 北大西方哲學(xué)史最詳細(xì)課件
- 護(hù)理題庫(kù)-基層衛(wèi)生崗位練兵和技能競(jìng)賽試題
- 分銷商合作協(xié)議書(shū)范本(3篇)
- 馬宗素《傷寒鈐法》全文
- 大型商業(yè)項(xiàng)目精裝修工程管控要點(diǎn)講解
- 基于CHO細(xì)胞的單抗生產(chǎn)
- 黃新波-智能變電站在線監(jiān)測(cè)課件
- 陜西康城藥業(yè)股份有限公司中藥、植物提取及固體制劑項(xiàng)目環(huán)評(píng)報(bào)告
- GB/T 12599-2002金屬覆蓋層錫電鍍層技術(shù)規(guī)范和試驗(yàn)方法
- JG-017結(jié)構(gòu)實(shí)體位置與尺寸偏差檢測(cè)作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論