版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
答:11、設(shè)圖G=(V,E),V={1,2,3,4,5,6},E={〈1,2〉,〈1,3〉,〈2,5〉,〈3,6〉,〈6,5〉,〈5,4〉,〈6,4〉}。畫出圖G,并寫出圖G中頂點的所有拓?fù)湫蛄小?,2,3,6,5,41,3,2,6,5,41,3,6,2,5,4五、代碼填空題01、圖的存儲結(jié)構(gòu)定義如下:typedefstructArcCell{VRTypeadj;/*圖中有1/0表示是否有邊,網(wǎng)中表示邊上的權(quán)值*//*InfoType*info;與邊相關(guān)的信息*/}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedefstruct{VertexTypevexs[MAX_VERTEX_NUM];/*頂點向量*/AdjMatrixarcs;/*鄰接矩陣*/intvexnum,arcnum;/*圖中當(dāng)前頂點數(shù)和邊數(shù)*/}MGraph;請寫出下面函數(shù)實現(xiàn)的功能:頂點在頂點向量中的定位。intLocateVex(MGraphG,VertexTypev){inti;for(i=0;i〈G.vexnum;i++)if(strcmp(v,G.vexs[i])==0)break;returni;}下面函數(shù)的功能是在圖中查找第1個鄰接點,請?zhí)羁?。intFirstAdjVex(MGraphG,intv){intj,p=-1;for(j=0;j〈G.vexnum;j++)if(G.arcs[v][j].adj==1){p=j;break;}returnp;下面函數(shù)的功能是在圖中查找下一個鄰接點,請?zhí)羁铡ntNextAdjVex(MGraphG,intv,intw){intj,p=-1;for(j二w+1;j〈G.vexnum;j++)if(G.arcs[v][j].adj==l){p=j;break;}returnp;}02、已知圖的鄰接表表示的形式說明如下:#defineMaxNum80typedefstructnode{intadjvex;//鄰接點域structnode*next;//鏈指針域}EdgeNode;//邊表結(jié)點結(jié)構(gòu)描述typedefstruct{charvertex;//頂點域EdgeNode*firstedge;//邊表頭指針}VertexNode;//頂點表結(jié)點結(jié)構(gòu)描述typedefstruct{VertexNodeadjlist[MaxNum];//鄰接表intn,e;}AlGraph;//鄰接表結(jié)構(gòu)描述下列算法輸出圖G的深度優(yōu)先生成樹(或森林)的邊,閱讀算法,并在空缺處填入合適的內(nèi)容,使其成為個完整的算法。typedefenum{FALSE,TRUE}Boolean;Booleanvisited[MaxNum];voidDFSForest(AlGraph*G){for(i=0;i〈G-〉n;i++)visited[i]二FALSE;for(i=0;i〈G-〉n;i++)if(!visited[i])DFSTree(G,i);}voidDFSTree(AlGraph*G,inti){visited[i]=TRUE;p=G-〉adjlist[i].firstedge;while(p!=NULL){if(!visited[p-〉adjves]){printf(G-〉adjlist[i].vertex,G-〉adjlist[p-〉adjvex].vertex);DSFTree(G,p-〉adjvex);}p=p-〉next;}}六、算法設(shè)計題01、編寫編歷算法,完成對圖的深度優(yōu)先搜索和廣度優(yōu)先搜索。答:深度優(yōu)先搜索:課本P169算法7.4和算法7.5廣度優(yōu)先搜索:課本P170算法7.602、編寫算法,由依次輸入的頂點數(shù)目、弧的數(shù)目、各頂點的信息和各條弧的信息建立有向圖的鄰接表。答:StatusBuild_AdjList(ALGraph&G)//輸入有向圖的頂點數(shù),邊數(shù),頂點信息和邊的信息建立鄰接表{InitALGraph(G);scanf("%d",&v);if(v〈0)returnERROR;//頂點數(shù)不能為負(fù)G.vexnum=v;scanf("%d",&a);
if(a<0)returnERROR;//邊數(shù)不能為負(fù)G.arcnum=a;for(m=0;m<v;m++)G.vertices[m].data=getchar();//輸入各頂點的符號for(m=1;m<=a;m++){t=getchar();h=getchar();//t為弧尾,h為弧頭if((i=LocateVex(G,t))<0)returnERROR;if((j=LocateVex(G,h))<0)returnERROR;//頂點未找到p=(ArcNode*)malloc(sizeof(ArcNode));if(!G.vertices.[i].firstarc)G.vertices[i].firstarc=p;else{for(q=G.vertices[i].firstarc;q->nextarc;q=q->nextarc);q->nextarc=p;}p->adjvex=j;p->nextarc=NULL;}//whilereturnOK;}//Build_AdjList03、試在鄰接矩陣存儲結(jié)構(gòu)上實現(xiàn)圖的基本操作:DeleteArc(G,v,w),即刪除一條邊的操作。提示:要刪除所有從第i個頂點出發(fā)的邊,即將鄰接矩陣的第i行全部置0。答://本題中的圖G均為有向無權(quán)圖。StatusDelete_Arc(MGraph&G,charv,charw)//在鄰接矩陣表示的圖G上刪除邊(v,w){if((i=LocateVex(G,v))<0)returnERROR;if((j=LocateVex(G,w))<0)returnERROR;if(G.arcs[i][j].adj){G.arcs[i][j].adj=0;G.arcnum--;}returnOK;}//Delete_Arc04、有n個頂點的有向圖的鄰接表定義如下04、有n個頂點的有向圖的鄰接表定義如下:#defineMaxNum80typedefstructArcNode{intadjvex;structArcNode*nextarc;}ArcNode;typedefstructVNode{VertexTypedata;ArcNode*firstedge;}VNode,AdjList[MaxNum];typedefstruct{AdjListvertices;intvexnum,arcnum;}AlGraph;設(shè)計算法分別實現(xiàn)以下要求求出圖G中每個頂點的出度;求出圖G中出度最大的一個頂點,計算圖G中出度為0的頂點數(shù);//鄰接點域//鏈指針域//邊表結(jié)點結(jié)構(gòu)描述//頂點域//邊表頭指針//頂點向量結(jié)點結(jié)構(gòu)描述//鄰接表//鄰接表結(jié)構(gòu)描述輸出該頂點號及其信息判斷圖G中是否存在弧〈i,j〉。答:本題答案見實驗部分05、試基于圖的深度優(yōu)先搜索策略寫一算法,判別以鄰接表方式存儲的有向圖中是否存在由頂點v到頂點v的ij路徑(i^j)。注意:算法中涉及的圖的基本操作必須在此存儲結(jié)構(gòu)上實現(xiàn)。答:intvisited[MAXSIZE];//指示頂點是否在當(dāng)前路徑上intexist_path_DFS(ALGraphG,inti,intj)//深度優(yōu)先判斷有向圖G中頂點i到頂點j是否有路徑,是則返回1,否則返回0{if(i==j)return1;//i就是jelse{visited[i]=1;for(p=G.vertices[i].firstarc;p;p=p-〉nextarc){k=p-〉adjvex;辻(!visited[k]&&exist_path(k,j))returnl;//i下游的頂點到j(luò)有路徑}//for}//else}//exist_path_DFS解2:(以上算法似乎有問題:如果不存在路徑,則原程序不能返回0。我的解決方式是在原程序的中引入一變量level來控制遞歸進(jìn)行的層數(shù)。具體的方法我在程序中用紅色標(biāo)記出來了。)intvisited[MAXSIZE];//指示頂點是否在當(dāng)前路徑上intlevel=l;//遞歸進(jìn)行的層數(shù)intexist_path_DFS(ALGraphG,inti,intj)//深度優(yōu)先判斷有向圖G中頂點i到頂點j是否有路徑,是則返回1,否則返回0{if(i==j)return1;//i就是jelse{vis
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抵押房子合同書(2篇)
- 2024年度生態(tài)農(nóng)業(yè)地產(chǎn)融資合作開發(fā)合同3篇
- 2024年度企業(yè)管理制度與勞動合同修訂及員工勞動關(guān)系處理合同2篇
- 2024年江西省藥品集中采購合同范本
- 2025勞動合同到期之后如何處理
- 2025理發(fā)店股份合同協(xié)議書
- 2024年施工項目質(zhì)量保證金合同版B版
- 2024年度風(fēng)電場風(fēng)機使用培訓(xùn)與技術(shù)支持合同2篇
- 展覽館設(shè)計裝修合同
- 2025中國銀行個人抵質(zhì)押循環(huán)貸款保證合同
- 護(hù)理質(zhì)控分析整改措施(共5篇)
- 金屬礦山安全教育課件
- 托盤演示教學(xué)課件
- 中華農(nóng)耕文化及現(xiàn)實意義
- DBJ61-T 112-2021 高延性混凝土應(yīng)用技術(shù)規(guī)程-(高清版)
- 2023年高考數(shù)學(xué)求定義域?qū)n}練習(xí)(附答案)
- 農(nóng)產(chǎn)品品牌與營銷課件
- 蘇科版一年級心理健康教育第17節(jié)《生命更美好》教案(定稿)
- 車輛二級維護(hù)檢測單參考模板范本
- 測定總固體原始記錄
- (最新整理)夜市一條街建設(shè)方案
評論
0/150
提交評論