



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗五 圖的基本操作一、實驗目的1、使學生可以鞏固所學的有關(guān)圖的基本知識。2、熟練掌握圖的存儲結(jié)構(gòu)。3、熟練掌握圖的兩種遍歷算法。二、實驗內(nèi)容問題描述對給定圖,實現(xiàn)圖的深度優(yōu)先遍歷和廣度優(yōu)先遍歷?;疽笠脏徑颖頌榇鎯Y(jié)構(gòu),實現(xiàn)連通無向圖的深度優(yōu)先和廣度優(yōu)先遍歷。以用戶指定的結(jié)點為起點,分別輸出每種遍歷下的結(jié)點訪問序列?!緶y試數(shù)據(jù)】由學生依據(jù)軟件工程的測試技術(shù)自己確定。三、實驗前的準備工作1、掌握圖的相關(guān)概念。2、掌握圖的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。3、掌握圖的兩種遍歷算法的實現(xiàn)。四、實驗報告要求1、實驗報告要按照實驗報告格式規(guī)范書寫。2、實驗上要寫出多批測試數(shù)據(jù)的運行結(jié)果。3、結(jié)合運行結(jié)果,對程序進
2、行分析。編程思路:深度優(yōu)先算法:計算機程序的一種編制原理,就是在一個問題出現(xiàn)多種可以實現(xiàn)的方法和技術(shù)的時候,應該優(yōu)先選擇哪個更合適的,也是一種普遍的邏輯思想,此種思想在運算的過程中,用到計算機程序的一種遞歸的思想。 度優(yōu)先搜索算法:又稱廣度優(yōu)先搜索,是最簡便的圖的搜索算法之一,這一算法也是很多重要的圖的算法的原型。Dijkstra單源最短路徑算法和Prim 最小生成樹算法都采用了和寬度優(yōu)先搜索類似的思想。其別名又叫BFS,屬于一種盲目搜尋法,目的是系統(tǒng)地展開并檢查圖中的所有節(jié)點,以找尋結(jié)果。換句話 說,它并不考慮結(jié)果的可能位址,徹底地搜索整張圖,直到找到結(jié)果為止。 以臨接鏈表作為存儲結(jié)構(gòu),結(jié)合
3、其存儲特點和上面兩種算法思想,給出兩種遍歷步驟:(1)既然圖中沒有確定的開始頂點,那么可從圖中任一頂點出發(fā),不妨按編號的順序,先從編號小的頂點開始。(2)要遍歷到圖中所有頂點,只需多次調(diào)用 從某一頂點出發(fā)遍歷圖的算法。所以,下面只考慮從某一頂點出發(fā)遍歷圖的問題。(3)為了在遍歷過程中便于區(qū)分頂點是否已經(jīng)被訪問,設(shè)置一個訪問標志數(shù)組 visitedn,n為圖中頂點的個數(shù),其初值為0,當被訪問過后,其值被置為1。(4)這就是遍歷次序的問題,圖的遍歷通常有深度優(yōu)先遍歷和廣度優(yōu) 先遍歷兩種方式,這兩種遍歷次序?qū)o向圖和有向圖都適用。1、深度優(yōu)先遍歷 從圖中某頂點v出
4、發(fā)進行深度優(yōu)先遍歷的基本思想是:(1)訪問頂點v;(2)從v的未被訪問的鄰接點中選取一個頂點w,從w出發(fā)進行深度優(yōu)先遍歷;(3)重復上述兩步,直至圖中所有和v有路徑相通的頂點都被訪問到。2、廣度優(yōu)先遍歷 從圖中某頂點v出發(fā)進行廣度優(yōu)先遍歷的基本思想是: (1)訪問頂點v;(2)依次訪問v的各個未被訪問的鄰接點v1,v2,vk;(3)分別從v1,v2,vk出發(fā)依次訪問它們未被訪問的鄰接點, 并使“先被訪問頂點的鄰接點”先于“后被訪問頂點的鄰接點”被訪問,直至圖中所有與頂點v有路徑的頂點都被訪問到。廣度優(yōu)先遍歷圖是以頂點v為起始點,由 近至遠,依次訪問和v有路徑
5、相通而且路徑長度為1,2,的頂點。為了使“先被訪問頂點的鄰接點”先于“后被訪問頂點的鄰接點”被訪問,需設(shè)置隊列存儲 訪問的頂點。代碼解析:#define MAXVEX 100int visitedMAXVEX;int n;struct edgenode int adjvex;/臨接結(jié)點序號 int info; /臨接結(jié)點信息 edgenode*next;連接結(jié)點的存儲類型struct vexnode int data;/結(jié)點信息 int No; edgenode*link;數(shù)組結(jié)點類型/*BFS遍歷時所需存儲類型*/struct queue int front,rear; edgenode*b
6、ase;typedef vexnode adjlistMAXVEX;采用用戶交換模式來創(chuàng)建臨接鏈表:void CreatGroup(adjlist&g,int&n) int e,s,d; printf("輸入結(jié)點(n)個數(shù)和邊(e)個數(shù):"); cin>>n>>e; for(int i=0;i<n;i+)/創(chuàng)建結(jié)點數(shù)組 printf("n輸入第%d個結(jié)點信息No=",i); scanf("%d",&gi.data); gi.link=NULL; /*建立臨接鏈表,創(chuàng)建的是有向圖*/
7、 for(int i=0;i<e;i+) printf("第%d條邊=>nt起點序號,終點序號:",i+1); cin>>s>>d;/表示弧由s指向d edgenode*p=new edgenode; /*每一個點的臨接結(jié)點沒有順序,為了插入p->adjvex方便每次插入結(jié)點都插入在臨接表的首位置,這樣后插入的結(jié)點反而在前面*/ p->adjvex=d; p->info=gd.data; p->next=gs.link; gs.link=p; void DFS(adjlist g,int v) visitedv=0
8、; printf("%d=>",v);/遍歷過的結(jié)點用visitedv=0進行標記 edgenode*p=gv.link;/查找連接結(jié)點 while(p) if(visitedp->adjvex) DFS(g,p->adjvex); p=p->next; /*廣度優(yōu)先搜索法(類似于樹的層次遍歷法)*/void BFS(adjlist g,int v) visitedv=0; printf("%d=>",v); queue Q; edgenode*p=gv.link; Q.base=new edgenode*MAXVEX; Q
9、.front=Q.rear=0; Q.baseQ.rear+=p; while(Q.front!=Q.rear) visitedQ.baseQ.front->adjvex=0; printf("%d=>",Q.baseQ.front->adjvex); while(p) if(visitedp->adjvex) Q.baseQ.rear+=p; p=p->next; p=gQ.base+Q.front->adjvex.link; 心得體會:數(shù)據(jù)結(jié)構(gòu)顧名思義講求的是一種存儲結(jié)構(gòu),一路走來先后學習了表、樹,最后學習的是圖,對于每種存儲結(jié)構(gòu)學習之初都會學習一些基本操作,而操作之中又以創(chuàng)建和遍歷為最基本的操作,只有熟練掌握了以后才能對其他操作進行研究和學習。圖的存儲結(jié)構(gòu)相比表和樹都要復雜,其操作過程也較難進行掌握。僅僅是創(chuàng)建圖的存儲結(jié)構(gòu)便分為矩陣、臨接鏈表、十字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年汽車雨刷片項目可行性研究報告
- 2025年手動視力檢查器行業(yè)深度研究分析報告-20241226-174948
- 變更發(fā)電機 環(huán)評報告表
- 冰箱產(chǎn)品購買合同范本
- 2023-2029年中國藥劑輔料行業(yè)競爭格局及市場發(fā)展?jié)摿︻A測報告
- 110KV變電站安裝工程三級自檢報告
- 合同能源管理EMC項目可行性研究報告
- 中國易撲欣項目投資可行性研究報告
- 針紡織棉項目可行性研究報告
- 藝人出道合同范本
- DB51T 1511-2022建設(shè)項目對自然保護區(qū)自然資源、自然生態(tài)
- 2024年湘教版初中地理一輪復習專題三 天氣與氣候
- 四級人工智能訓練師(中級)職業(yè)技能等級認定考試題及答案
- 運用HFMEA品管工具優(yōu)化臨床安全輸血流程醫(yī)院品質(zhì)管理獲獎案例(護理部聯(lián)合臨床輸血科信息處)
- 《商務(wù)溝通-策略、方法與案例》課件 第八章 求職溝通
- 法律思維及案例培訓
- Meta分析高分文獻匯報課件模板
- 養(yǎng)老院各職位崗位職責
- 市政工程混凝土排水溝設(shè)計方案
- 2024年湖北省武漢市中考英語真題(含解析)
- 燕窩采購合同模板
評論
0/150
提交評論