




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、求無向連通圖得生成樹一、實驗目得掌握圖得邏輯結構掌握圖得鄰接矩陣存儲結構驗證圖得鄰接矩陣存儲及其遍歷操作得實現(xiàn)二、實驗內容(1)建立無向圖得鄰接矩陣存儲(2)對建立得無向圖,進行深度優(yōu)先遍歷(3 )對建立得無向圖進行廣度優(yōu)先遍歷三、設計與編碼(1 )本實驗用到得理論知識(2)算法設計(3 )編碼/ 圖抽象類型及其實現(xiàn)、c pp : Defi n e s the e nt r y po i nt f or the console ap p 1 ic a t i on、/#inclu d e ”st d afx。h”#include “Gr aph.h"# in c lude “io s
2、 t r e am。h”in t Gra p h:F i nd(int key, i nt & k )i n t flag=0;f o r( int i = 0 ;i < V ert e xL en ; i + )? i f (A i 、d a ta。k e y=key)k = i;f 1 ag= 1 ; bre a k; ;? return flag;int Graph :CreateGraph( int ver texnum, Edge E, int edge num)? /由邊得集合E(EE VertexNum 1),生成該圖得鄰接表表示? if (ve r t exn u
3、 m<1)re t urn (- 1 ); / 參數(shù)ver t e xnum非法? i nt i, f ron t ,r e ar,k;Enode * q ;先生成不帶邊表得頂點表-一即頂點為孤立頂點集A=n ewVn o devertexn u mr;? if (! A) return (0); / /堆耗盡 for ( i = 0 ; i < v e rtexnum; i +) ? Ai 、 data、k e y = i;? Ai、 ? ? A i、 t a g = 0;? Ai、t a g=0;d ata. I n Degree=Ai、d at a。OutD eg r ee=
4、Ai、fir s t= 0 ;)5Ver t exLen=ve r t e xn um;/在生成邊表? i f (edgenum < 0) return (1); / 無邊得圖for (i ? front=0;i <edg enum ;i+)=E i 。 Head ; r e a r = Ei 。 Tai l;? i f (! Fin d(rea r , k) 2); /參數(shù)E非法? q=newEno d e ;? if (! q) return ( 0 );? ? q- > k e y=fr o nt;!Find(front,k) ret urn(q->Weig h
5、t= E i ? q>next=A rearA rear、f i r A rear、data.、wei gh t; first;s t =q;O u t D egre 。In Deg ree +;e +;? A fro nt、dat a if ( T ype>2) ? q=n ewEnode;if (!q) retu r n( 0 );? ? q > key= r ear;? ? ? q- > nex t =A f r o nt、f irst;? ? A f r ont 。f i rst= q ;? q >We g h t=E i .wei g h t ;?;r
6、e t u rn (1););voi d Gra ph:Dfs( int k e y, in t &fl a g )(? /stati c ru n = 1;? Enod e * w ;? A key、t a g= f lag;i f (T y pe2)c o u t ”連通分量="<<fla g <<'t '? c out頂點鍵值=< < key< <endl;f o r(w=A k ey、f i rst; w ;w =w >next)if (! Aw >key、tag)Dfs(wkey,fla g
7、 ););i n t Gr a p h二 D fsDrave r s( int v0) / 從指定頂點深度遍歷i n t i,k,c o mpon ent n u m =1;/if(T ype < 3)retu r n( 1); /不考慮由向圖? /co ut < <" beg a in、.、.n"if ( ! (Fi n d( v 0, k) co u t <"f i nd="«k <<en dl; re turn ( 0 ); ; /初始結點v0不存在? if (Ty p e > 2)c o u t
8、 <”-連通分量"<pone nt n urn < <"-"< < e n dl;Df s(k, p one ntn u m);? com pone n tnum+ +;for (i = 0 ;i<Verte x Len; i +)? i f (! A i 、tag) ? ? i f ( T y p e>2)c o ut < <”一連通分量<componentnum << "-"< <en dl;? ? Df s (i, c o mp onentnu m)
9、;ponen t num +;? );? ;return ( c ompo n e ntnum-1);int G a aph:Bfs()? i n t i,p=1; ? ? ? /co 1!=連通分量得標記,、.。、struct queue int key; queue * next; ;? Enode * pe;? qu e ue *f,*r,*q,* p=new q ue ue;if (! p) return (-1); ? ? ? ?/ 堆耗盡? p- > next=0;f=r=p; ?/ 生成空隊列? for(i =0 ;i Ver t exLen;i+)A i .t ag=0;
10、 初始化已訪問標志? f or (i=0;i<Ve r texL e n; i +)? ? i f (A i.tag =0 ) ? ? Ai 。 t ag=p ;?/入隊該頂點得key? p= n ew qu e ue;?i f(! p)return (-1);? ? ? p > ke y =A i .d a ta、key;? p- > n ext=0;? ? f- > nex t =p;r=p;? while (f- > next)/當隊非空時/出隊一頂點? ? q=f- > n e xt; ? i f (Type> 2 ) c out<”連通
11、分量 ”<c o m p< t 7 ;? cou t < < "頂點鍵值="? f >ne xt=q >next;? ? i f (q = = r)r= f ; ?pe = A q->key。? ? while (p e)< <q >key <<e ndl;/與q連接得未訪問得頂點入隊 first;? i f (Ap e - > key.tag =0)? ? /入隊? ? if (!(p= n ew q u e ue) r eturn (-1);? ? Ape->key.ta g =com
12、p; p->key=pe- > key;? ? ? p ne x t = 0 ;? ? ? if (f= = r )f- >next=p;r >next=p;r= p ;)5?p e=p> >ne xt;? ?; /end of (pe)? ? d e l e te q ;? ; /en d of (f-> next)? ? ? c 0mp + +;? ; /enf of i f? ;/釋放隊列whil e (f) p=f >next; d e lete f;f =p;?return c 0mp 1; /返回連通分量數(shù);/ *i n t G r
13、a ph:To p oSo r t( in t * q u e , i nt &nu m) /que順序隊列保存了拓撲排序得結果,f與r為q u e得頭尾指示;loo p用于判有無環(huán)? int i,f=0, r = 0 ,index,loo p=1;Enod e * pe ;num= 0;for (i =0; i Ver t e xL en;i +)Ai .tag=Ai 。da t a .In Deg r ee; /初始化入度到t a g域for (i=0;i<VertexLen; i+)if (Ai 。tag = = 0)quer +=i;Ai 。ta = = 1;loo p
14、=0;i f (loop) r e turn (0);? whi le (f<r)/棧未處理完? i n dex= q u e f+ ;? ? fo r (p e =A ind ex、first;pe;pe=pe >n ext)? ? ? ?Ape>ke y 。tag-;? if (A pek ey .ta g = 0 ) quer+ = p e >key ;A pe->key.t a g = 1; ;;? ;num =r;i f (r <Vert exLen) re t urn (0); /存在環(huán)r e turn 1;i n t main( int arg
15、c, ch a r * argv) Graph g1(1);int n um= 5,temp=1;? int *stac k=new i n t 5 ;Edg e b 1 2 ;b0 。Head=l ;b 0 .Tai 1 = 0 ;b0 、w eigh t = 1 ;b 1、He a d =3;b 1 .Ta i l=1;b 1 。weig h t = 1;? b2 . Head=O ;b 2 、Ta i 1 =2; b 2、we igh t =1;? b 3。Hea d=1;b3. Tai l=4;b 3 . wei ght =1;? b4。Head=4;b 4 、T ail =2; b
16、4 。w eigh t = 1 ;? b5、Head=4;b 5 .Tail=3; b 5。weigh t =1;? /? b 6 。 He ad = 0;b 6 、Tai 1 =1; b 6、we ig h t =1;b 7 o Hea d=1;b 7 。Tail= 3 ;b 7.w e ight= 1 ;? b 8. Head =2;b 8。Tai l=0;b8 、wei g ht=1;? b 9 、Hea d=4 ;b 9 > Tai l=1;b 9。weigh t = 1 ;b 10.Head= 2 ;b 10、Tail= 4 ; b 10 > we ight = 1 ;b
17、 11。H ead= 3 ;b 11、Tail =2;b1 1 . w e ight =1;? /b= 1,0,1,3,1,1 , 0, 2, 1 ,(1,4, 1, 4 ,2,1 ,2,3,1;? g 1 o Great eGraph(num,b,6);i f (g 1 .GetTyp e () > 2 ) c out< <"連通分量數(shù)="<< g1 .DfsDraver s (2)<endl ;c o ut"- u <end 1 ;i f ( g 1、Get Typ e() >2)cou t << ”連通分量數(shù)="<< g 1。Bfs() << endl;? if (g 1 .GetType() <3)? if ( g 1。TopoS o rt(sta c k,t e mp )cout< ”拓撲排序成功! n "? ? e 1 se c ou t << ”該圖有環(huán)! n”;? co u t<”部分或全部得拓撲序列為:(頂點總數(shù)="g1。GetLe n () < &
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 池塘噴泉修繕施工方案
- 桁架施工方案
- 特殊施工方案
- 昆明石方爆破施工方案
- 二零二五年度文化旅游地產項目房屋及土地所有權轉讓協(xié)議
- 二零二五年度高校畢業(yè)生就業(yè)安置與就業(yè)服務保障合同
- 二零二五年度車庫購置與車位共享運營協(xié)議
- 二零二五年度玉米種植補貼收購合同
- 二零二五年度廉潔合作協(xié)議:公共資源交易項目監(jiān)管合同
- 二零二五年度飼料行業(yè)風險評估與保險合同
- 計算機應用基礎教程(Windows10+Office2016)PPT全套完整教學課件
- 2023年06月北京市地質礦產勘查院所屬事業(yè)單位公開招聘39人筆試題庫含答案詳解析
- 后路腰椎椎間融合翻修術
- 天津武清區(qū)事業(yè)單位考試真題2022
- 氣候變化與林業(yè)碳匯知到章節(jié)答案智慧樹2023年浙江農林大學
- 2021年湖北省煙草專賣局系統(tǒng)招聘考試真題
- 食材配送企業(yè)管理制度(完整)
- (帶答案)初中物理第八章運動和力重難點歸納
- 造價咨詢重點、難點及控制措施
- 鐵路營業(yè)線施工安全管理培訓課件
- 梅毒的診斷與治療資料
評論
0/150
提交評論