版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗五圖操作實現(xiàn)實驗五圖操作實現(xiàn)實驗五圖操作實現(xiàn)xxx公司實驗五圖操作實現(xiàn)文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設(shè)計,管理制度實驗五圖操作實現(xiàn)實驗日期:2017年4月27日實驗?zāi)康募耙?.熟練掌握圖的鄰接矩陣和鄰接表的存儲方式;2.實現(xiàn)圖的一些基本運算,特別是深度優(yōu)先遍歷和廣度優(yōu)先遍歷;實驗內(nèi)容用鄰接矩陣法建一個無向連通圖(頂點信息為順序字母A,B,C,D...,而非鍵盤輸入),分別用dfs(深度優(yōu)先搜索)和bfs(廣度優(yōu)先搜索)遍歷,輸出圖中頂點信息并驗證。鄰接矩陣圖類型定義:#defineMAX40typedefcharvexType;/*頂點類型*/typedefstruct{vexTypevex[MAX];intarcs[MAX][MAX];intvn,en;}MGraph;訪問標記數(shù)組定義:intvisited[MAX];/*值為0時對應(yīng)頂點未被訪問,值為1時對應(yīng)頂點已被訪問*/順序存儲的循環(huán)隊列類型定義:typedefintdatatype;/*隊列元素為圖的頂點下標,int型*/typedefstructnode{datatypedata[MAX];intfront,rear;}SeqQueue;/*順序存儲的循環(huán)隊列類型*/任務(wù)1.自定義函數(shù)庫文件,完成隊列的相關(guān)操作。2.創(chuàng)建一個程序文件,自定義相應(yīng)函數(shù)完成以下操作:(1)voidcreateGraph(MGraph*g)/*建鄰接矩陣存儲的無向圖*/(2)voidvisit(MGraph*g,intv)/*訪問v號頂點*/(3)voiddfs(MGraph*g,intv)/*鄰接矩陣存儲的圖的深度優(yōu)先搜索*/(4)voidbfs(MGraph*g,intv)/*鄰接矩陣存儲的圖的廣度優(yōu)先搜索*/3.回答下列問題(1)現(xiàn)有定義:MGraph*g,并且g指針指向的無向圖已創(chuàng)建完成,請寫出該圖遍歷前需初始化visited數(shù)組的C程序語句。for(i=0;i<;i++){/*標記數(shù)組初始化*/ visited[i]=0;}(2)定義函數(shù)intcount(MGraph*g)統(tǒng)計非連通圖的連同分量個數(shù)。(說明:借助遍歷算法實現(xiàn))intcount(MGraph*g){inti,m=0;for(i=0;i<g->vn;i++)if(visited[i]==0){m++;dfs(g,i);}returnm;}4.自定義函數(shù)庫文件與源程序清單(含必要的注釋):#include<>typedefintdatatype;/*隊列元素為圖的頂點下標,int型*/typedefstructnode{ datatypedata[MAX]; intfront,rear;}SeqQueue;/*順序存儲的循環(huán)隊列類型*/voidInitQueue(SeqQueue*Q);/*初始化隊列*/voidEnQueue(SeqQueue*Q,intv);/*入隊*/datatypeDeQueue(SeqQueue*Q);/*出隊*/intEmptyQueue(SeqQueue*Q);/*判隊空*/intFullQueue(SeqQueue*Q);/*判隊滿*/voidInitQueue(SeqQueue*Q){ Q->front=Q->rear=0;}voidEnQueue(SeqQueue*Q,intv){ if(FullQueue(Q)){ printf("隊列已滿!");/*判隊滿*/ return; } Q->rear=(Q->rear+1)%MAX;/*入隊*/ Q->data[Q->rear]=v;}datatypeDeQueue(SeqQueue*Q){ if(EmptyQueue(Q)){ printf("隊列為空!");/*判隊空*/ return-1; } Q->front=(Q->front+1)%MAX;/*出隊*/ returnQ->data[Q->front];}intEmptyQueue(SeqQueue*Q){ returnQ->front==Q->rear;}intFullQueue(SeqQueue*Q){ return(Q->rear+1)%MAX==Q->front;}:#defineMAX40#include""intvisited[MAX];/*值為0時對應(yīng)頂點未被訪問,值為1時對應(yīng)頂點已被訪問*/typedefcharvexType;/*頂點類型*/typedefstruct{ vexTypevex[MAX]; intarcs[MAX][MAX]; intvn,en;}MGraph;voidcreateGraph(MGraph*g);/*建鄰接矩陣存儲的無向圖*/voidvisit(MGraph*g,intv);/*訪問v號頂點*/voiddfs(MGraph*g,intv);/*鄰接矩陣存儲的圖的深度優(yōu)先搜索*/voidbfs(MGraph*g,intv);/*鄰接矩陣存儲的圖的廣度優(yōu)先搜索*/voidcreateGraph(MGraph*g){ inti,j,v; chara='A'; printf("輸入頂點數(shù):");/*輸入頂點數(shù)和邊數(shù)*/ scanf("%d",&g->vn); printf("輸入邊數(shù):"); scanf("%d",&g->en); for(i=0;i<g->vn;i++){/*二維數(shù)組初始化*/ for(j=0;j<g->vn;j++){ g->arcs[i][j]=0; } } for(v=0;v<g->vn;v++){/*確定數(shù)據(jù)*/ g->vex[v]=a; a++; } printf("輸入結(jié)構(gòu):\n");/*確定邊*/ for(v=0;v<g->en;v++){ scanf("%d%d",&i,&j); g->arcs[i][j]=1; g->arcs[j][i]=1; }}voidvisit(MGraph*g,intv){ printf("%c",g->vex[v]);}voiddfs(MGraph*g,intv){ intj; visit(g,v);/*輸出數(shù)據(jù)*/ visited[v]=1;/*標記已訪問*/ for(j=0;j<g->vn;j++){ if(g->arcs[v][j]==1&&visited[j]==0){ dfs(g,j);/*遞歸*/ } }}voidbfs(MGraph*g,intv){ inti,w; SeqQueueQ; InitQueue(&Q);/*隊列初始化*/ EnQueue(&Q,v);/*入隊*/ visited[v]=1;/*標記已訪問*/ while(!EmptyQueue(&Q)){ w=DeQueue(&Q);/*出隊*/ visit(g,w);/*輸出數(shù)據(jù)*/ for(i=0;i<g->vn;i++){ if(g->arcs[w][i]==1&&visited[i]==0){ EnQueue(&Q,i);/*入隊*/ visited[i]=1;/*標記已訪問*/ } } }}voidmain(){ MGraphg; inti,v; createGraph(&g);/*建圖*/ for(i=0;i<;i++){/*標記數(shù)組初始化*/ visited[i]=0; } printf("開始頂點:");/*輸入遍歷開始頂點*/ scanf("%d",&v); printf("輸出(dfs):");/*DFS輸出*/ dfs(&g,v); printf("\n"); for(i=0;i<;i++){/*標記數(shù)組初始化*/ visited[i]=0; } printf("輸出(bfs)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 批量購車協(xié)議模板
- 架子工勞務(wù)分包合同
- 房屋買賣合同范本官方版
- 分期付款購房的流程及條件
- 公共衛(wèi)生潔具招標采購指南
- 改過自新我承諾不再勒索
- 定金協(xié)議合同范例分析
- 專項法律咨詢
- 實驗室大型設(shè)備采購合同
- 油漆工程施工合同書
- 《有效溝通技巧》課件
- 2023年北京語言大學(xué)新編長聘人員招聘考試真題
- 食品安全教育培訓(xùn)
- 福建省福州市2023-2024學(xué)年高一上學(xué)期期末考試物理試卷 附答案
- 管道保溫施工方案
- 工藝工程師招聘筆試題與參考答案(某大型集團公司)
- 商務(wù)禮儀(通識課)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 智能工廠梯度培育要素條件
- 2024年人事科工作總結(jié)(五篇)
- 小班小主持課件
- 黑龍江省哈爾濱市2022-2023學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題(含答案)
評論
0/150
提交評論