![2-深度優(yōu)先遍歷以鄰接表存儲的圖-實驗報告_第1頁](http://file4.renrendoc.com/view/3756bd64c66022684a61a1eacc5b5298/3756bd64c66022684a61a1eacc5b52981.gif)
![2-深度優(yōu)先遍歷以鄰接表存儲的圖-實驗報告_第2頁](http://file4.renrendoc.com/view/3756bd64c66022684a61a1eacc5b5298/3756bd64c66022684a61a1eacc5b52982.gif)
![2-深度優(yōu)先遍歷以鄰接表存儲的圖-實驗報告_第3頁](http://file4.renrendoc.com/view/3756bd64c66022684a61a1eacc5b5298/3756bd64c66022684a61a1eacc5b52983.gif)
![2-深度優(yōu)先遍歷以鄰接表存儲的圖-實驗報告_第4頁](http://file4.renrendoc.com/view/3756bd64c66022684a61a1eacc5b5298/3756bd64c66022684a61a1eacc5b52984.gif)
![2-深度優(yōu)先遍歷以鄰接表存儲的圖-實驗報告_第5頁](http://file4.renrendoc.com/view/3756bd64c66022684a61a1eacc5b5298/3756bd64c66022684a61a1eacc5b52985.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1頁共2頁《數(shù)據(jù)結構與關系數(shù)據(jù)庫(本科)》實驗報告姓名班級學號實驗日期課程名稱數(shù)據(jù)結構與關系數(shù)據(jù)庫(本科)指導教師成績實驗名稱:深度優(yōu)先遍歷以鄰接表存儲的圖實驗目的1、掌握以鄰接表存儲的圖的深度優(yōu)先遍歷算法;實驗環(huán)境硬件環(huán)境:微機軟件環(huán)境:WindowsXP,VC6.0三、實驗內容、步驟及結果1、實驗內容:基于圖的深度優(yōu)先遍歷編寫一個算法,判別以鄰接表方式存儲的有向圖中是否存在由頂點vi到頂點vj的路徑(i≠j)。2、代碼:#include<stdio.h>#include<stdlib.h>#defineMaxVertexNum100/*最大頂點數(shù)為100*/typedefcharVertexType;typedefstructnode{/*邊表結點*/ intadjvex;/*鄰接點域*/ structnode*next;/*指向下一個鄰接點的指針域*/ /*若要表示邊上信息,則應增加一個數(shù)據(jù)域info*/}EdgeNode;typedefstructvnode{/*頂點表結點*/ VertexTypevertex;/*頂點域*/ EdgeNode*firstedge;/*邊表頭指針*/}VertexNode;typedefVertexNodeAdjList[MaxVertexNum];/*AdjList是鄰接表類型*/typedefstruct{ AdjListadjlist;/*鄰接表*/ intn,e;/*頂點數(shù)和邊數(shù)*/}ALGraph;/*ALGraph是以鄰接表方式存儲的圖類型*/boolvisited[MaxVertexNum];voidCreateTestALGraph(ALGraph*G){/*建立有向圖的鄰接表存儲*/ inti,j; EdgeNode*s; G->n=8;G->e=9; for(i=0;i<G->n;i++)/*建立有n個頂點的頂點表*/ { G->adjlist[i].vertex='1'+i;//轉換為字符型 G->adjlist[i].firstedge=NULL;/*頂點的邊表頭指針設為空*/ } { i=0,j=1; s=(EdgeNode*)malloc(sizeof(EdgeNode));/*生成新邊表結點s*/ s->adjvex=j;/*鄰接點序號為j*/ s->next=G->adjlist[i].firstedge;/*將新邊表結點s插入到頂點Vi的邊表頭部*/ G->adjlist[i].firstedge=s; i=0,j=2; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;///*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=1,j=3; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=1,j=4; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=2,j=0; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=2,j=6; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=3,j=4; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; i=4,j=3; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新邊表結點s s->adjvex=j;//*鄰接點序號為j s->next=G->adjlist[i].firstedge;//*將新邊表結點s插入到頂點Vi的邊表頭部 G->adjlist[i].firstedge=s; }///*CreateALGraph}voidDFSTraverseAL(ALGraph*G){/*深度優(yōu)先遍歷以鄰接表存儲的圖G*/ inti; for(i=0;i<G->n;i++) visited[i]=false;/*標志向量初始化*/ for(i=0;i<G->n;i++) if(!visited[i])DFSAL(G,i);/*vi未訪問過,從vi開始DFS搜索*/}/*DFSTraveseAL*///intlevel=1;//遞歸進行的層數(shù)intexist_path_DFS(ALGraph*G,inti,intj)//深度優(yōu)先判斷有向圖G中頂點i到頂點j是否有路徑,是則返回1,否則返回0{EdgeNode*p;intk;if(i==j)return1;//i就是jelse{visited[i]=true;//for(p=G->adjlist[i].firstedge;p;p=p->next,level--) for(p=G->adjlist[i].firstedge;p;p=p->next){ //level++;k=p->adjvex;if(!visited[k]&&exist_path_DFS(G,k,j)) {printf("V%d",k+1); return1;//i下游的頂點到j有路徑 } }//for return0;}//else//if(level==1)return0;}//exist_path_DFSvoidmain(){ ALGraph*G; G=(ALGraph*)malloc(sizeof(ALGraph));CreateTestALGraph(G); inti,j;printf("請輸入i和j的值格式:i,j\n"); scanf("%d,%d",&i,&j); i=i-1; j=j-1; if(i==j) { printf("i不能等于j\n"); } else { if(exist_path_DFS(G,i,j)) { printf("該路徑存在。\n"); }else { printf("該路徑不存在。\n"); } } }3、測試數(shù)據(jù)與實驗結果分析(可以用組合鍵Alt+PrintScreen截圖):上述例子中建立的有向圖2121543543該有向圖的鄰接鏈表如下序號標號0V11V22V3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 15《八角樓上》(說課稿)2024-2025學年-統(tǒng)編版二年級語文上冊001
- 7《不甘屈辱奮勇抗爭-圓明園的訴說》(說課稿)統(tǒng)編版道德與法治五年級下冊
- 2023七年級英語下冊 Unit 2 What time do you go to school Section A 第1課時(1a-2d)說課稿 (新版)人教新目標版
- 8大家的“朋友”(說課稿)-部編版道德與法治三年級下冊
- 2024-2025學年高中歷史 第一單元 中國古代的農耕經濟 第5課 農耕時代的商業(yè)與城市(1)教學說課稿 岳麓版必修2
- 2024年八年級歷史下冊 第三單元 第11課 為實現(xiàn)中國夢而努力奮斗說課稿 新人教版
- 2024年三年級品社下冊《學看平面圖》說課稿 山東版
- 2025三元區(qū)國有商品林采伐與銷售權轉讓合同書
- Unit 5 Colours Lesson 2 (說課稿)-2024-2025學年人教新起點版英語一年級上冊
- 5守株待兔 (說課稿)2023-2024學年統(tǒng)編版三年級語文下冊
- 2024年長沙衛(wèi)生職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 河北省滄州市五縣聯(lián)考2024-2025學年高一上學期期末英語試卷(含答案含含聽力原文無音頻)
- 福建省泉州市南安市2024-2025學年九年級上學期期末考試語文試題(無答案)
- 腫瘤護士培訓課件
- 新課標體育與健康水平二教案合集
- 2025屆高考語文一輪復習知識清單:古代詩歌鑒賞
- 醫(yī)療器材申請物價流程
- 我的消防文員職業(yè)規(guī)劃
- 公司事故隱患內部報告獎勵機制
- 10000中國普通人名大全
- 市域社會治理現(xiàn)代化解決方案
評論
0/150
提交評論