版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
求無(wú)向連通圖旳生成樹(shù)一、實(shí)驗(yàn)?zāi)繒A=1\*GB2⑴掌握?qǐng)D旳邏輯構(gòu)造=2\*GB2⑵掌握?qǐng)D旳鄰接矩陣存儲(chǔ)構(gòu)造=3\*GB2⑶驗(yàn)證圖旳鄰接矩陣存儲(chǔ)及其遍歷操作旳實(shí)現(xiàn)二、實(shí)驗(yàn)內(nèi)容(1)建立無(wú)向圖旳鄰接矩陣存儲(chǔ)(2)對(duì)建立旳無(wú)向圖,進(jìn)行深度優(yōu)先遍歷(3)對(duì)建立旳無(wú)向圖進(jìn)行廣度優(yōu)先遍歷三、設(shè)計(jì)與編碼(1)本實(shí)驗(yàn)用到旳理論知識(shí)(2)算法設(shè)計(jì)(3)編碼//圖抽象類型及其實(shí)現(xiàn).cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"Graph.h"#include"iostream.h"intGraph::Find(intkey,int&k){ intflag=0;?for(inti=0;i<VertexLen;i++)??if(A[i].data.key==key){k=i;flag=1;break;};? returnflag;};intGraph::CreateGraph(intvertexnum,Edge*E,intedgenum){?//由邊旳集合E(E[0]~E[VertexNum-1]),生成該圖旳鄰接表表達(dá) ?if(vertexnum<1)return(-1);//參數(shù)vertexnum非法?inti,front,rear,k; Enode*q; //先生成不帶邊表旳頂點(diǎn)表--即頂點(diǎn)為孤立頂點(diǎn)集 A=newVnode[vertexnum];?if(!A)return(0);//堆耗盡?for(i=0;i<vertexnum;i++)?{ A[i].data.key=i; A[i].tag=0; A[i].data.InDegree(cuò)=A[i].dat(yī)a.OutDegree=A[i].tag=0;? A[i].first=0;?};?VertexLen=vertexnum;?//在生成邊表?if(edgenum<0)return(1);//無(wú)邊旳圖 for(i=0;i<edgenum;i++)?{ ?front=E[i].Head;rear=E[i].Tail;??if(!Find(rear,k)||!Find(front,k))return(-2);//參數(shù)E非法? q=newEnode;??if(!q)return(0);??q->key=front;? q->Weight=E[i].weight; ?q->next=A[rear].first; ?A[rear].first=q; ?A[rear].data.OutDegree++; ?A[front].data.InDegree++; if(Type>2)? {? q=newEnode; ?if(!q)return(0); ??q->key=rear;???q->next=A[front].first; A[front].first=q; ? q->Weight=E[i].weight;? ?}; }; return(1);};voidGraph::Dfs(intkey,int&flag){ //staticrun=1; Enode*w;?A[key].tag=flag; if(Type>2)cout<<"連通分量="<<flag<<'\t'; cout<<"頂點(diǎn)鍵值="<<key<<endl;?for(w=A[key].first;w;w=w->next)??if(!A[w->key].tag)Dfs(w->key,flag);};intGraph::DfsDravers(intv0)//從指定頂點(diǎn)深度遍歷{ inti,k,componentnum=1; //if(Type<3)return(-1);//不考慮由向圖 //cout<<"begain....\n"; if(!(Find(v0,k))){cout<<"find=="<<k<<endl;return(0);};//初始結(jié)點(diǎn)v0不存在?if(Type>2)cout<<"---連通分量"<<componentnum<<"---"<<endl; Dfs(k,componentnum); componentnum++; for(i=0;i<VertexLen;i++)?{? if(!A[i].tag){ ?if(Type>2)cout<<"---連通分量"<<componentnum<<"---"<<endl; ??Dfs(i,componentnum);componentnum++;? };?};?return(componentnum-1);};intGraph::Bfs(){ inti,comp=1;?? ??//comp=連通分量旳標(biāo)記,、、...?structqueue{intkey;queue*next;}; Enode*pe; queue*f,*r,*q,*p=newqueue; if(!p)return(-1);?? ? //堆耗盡?p->next=0;f=r=p; ? ?//生成空隊(duì)列 for(i=0;i<VertexLen;i++)A[i].tag=0;//初始化已訪問(wèn)標(biāo)志 for(i=0;i<VertexLen;i++) {??if(A[i].tag==0)??{? A[i].tag=comp; ? //入隊(duì)該頂點(diǎn)旳key p=newqueue;? ?if(!p)return(-1); ??p->key=A[i].data.key; ?p->next=0;? ?f->next=p;r=p;???while(f->next)//當(dāng)隊(duì)非空時(shí) ? {//出隊(duì)一頂點(diǎn) ? ?q=f->next;?? ? if(Type>2)cout<<"連通分量"<<comp<<'\t';? ? cout<<"頂點(diǎn)鍵值="<<q->key<<endl; ??f->next=q->next; ? if(q==r)r=f; //與q連接旳未訪問(wèn)旳頂點(diǎn)入隊(duì) ? pe=A[q->key].first; ? while(pe) ?{ ?? if(A[pe->key].tag==0)?? {//入隊(duì)? ? if(!(p=newqueue))return(-1);??? ? A[pe->key].tag=comp;? ?? p->key=pe->key; ?? p->next=0; ?? ?if(f==r)f->next=p;? ?? r->next=p;r=p; ? ? }; ? ? pe=pe->next; ? ?};//endof(pe) ? deleteq;?? };//endof(f->next)?? comp++; ? ? };//enfofif }; //釋放隊(duì)列 while(f){p=f->next;deletef;f=p;};?returncomp-1;//返回連通分量數(shù)};/*intGraph::TopoSort(int*que,int&num){//que順序隊(duì)列保存了拓?fù)渑判驎A成果,f和r為que旳頭尾批示;loop用于判有無(wú)環(huán) inti,f=0,r=0,index,loop=1;?Enode*pe; num=0;?for(i=0;i<VertexLen;i++)A[i].tag=A[i].data.InDegree(cuò);?//初始化入度到tag域?for(i=0;i<VertexLen;i++)if(A[i].tag==0){que[r++]=i;A[i].tag=-1;loop=0;}; if(loop)return(0);?while(f<r)?{//棧未解決完 index=que[f++]; for(pe=A[index].first;pe;pe=pe->next) ?{? ?A[pe->key].tag--;?? if(A[pe->key].tag==0){que[r++]=pe->key;A[pe->key].tag=-1;}; };? }; num=r;?if(r<VertexLen)return(0);//存在環(huán) return1;};intmain(intargc,char*argv[]){Graphg1(1);?intnum=5,temp=1;?int*stack=newint[5];?Edgeb[12]; b[0].Head=1;b[0].Tail=0;b[0].weight=1;?b[1].Head=3;b[1].Tail=1;b[1].weight=1; b[2].Head=0;b[2].Tail=2;b[2].weight=1; b[3].Head=1;b[3].Tail=4;b[3].weight=1; b[4].Head=4;b[4].Tail=2;b[4].weight=1; b[5].Head=4;b[5].Tail=3;b[5].weight=1;?//?b[6].Head=0;b[6].Tail=1;b[6].weight=1;?b[7].Head=1;b[7].Tail=3;b[7].weight=1;?b[8].Head=2;b[8].Tail=0;b[8].weight=1;?b[9].Head=4;b[9].Tail=1;b[9].weight=1;?b[10].Head=2;b[10].Tail=4;b[10].weight=1;?b[11].Head=3;b[11].Tail=2;b[11].weight=1; //b=={{1,0,1},{3,1,1},{0,2,1},(1,4,1},{4,2,1},{2,3,1}}; g1.CreateGraph(num,b,6); if(g1.GetType()>2)cout<<"連通分量數(shù)="<<g1.DfsDravers(2)<<endl; cout<<"--------------"<<endl; if(g1.GetType()>2)cout<<"連通分量數(shù)="<<g1.Bfs()<<endl;?if(g1.GetType()<3) {??if(g1.TopoSort(stack,temp))cout<<"拓?fù)渑判虺晒?\n";? elsecout<<"該圖有環(huán)!\n"; ?cout<<"部分或所有旳拓?fù)湫蛄袨?(頂點(diǎn)總數(shù)="<<g1.GetLen()<<")\n"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省株洲市2026屆高三上學(xué)期教學(xué)質(zhì)量統(tǒng)一檢測(cè)(一模)英語(yǔ)試卷(含答案無(wú)聽(tīng)力音頻及聽(tīng)力原文)
- 廣東省深圳市福田區(qū)2025-2026學(xué)年九年級(jí)上學(xué)期1月期末考試化學(xué)試卷(含答案)
- 2025-2026學(xué)年內(nèi)蒙古呼和浩特市八年級(jí)(上)期末數(shù)學(xué)試卷(含答案)
- 四川省達(dá)州市渠縣第二中學(xué)2025-2026學(xué)年八年級(jí)上學(xué)期1月月考數(shù)學(xué)試題(無(wú)答案)
- 化工企業(yè)班組級(jí)培訓(xùn)課件
- 11月債市回顧及12月展望:關(guān)注重磅會(huì)議把握1.85配置價(jià)值
- 飛機(jī)連接技術(shù)鉚接
- 2026天津商業(yè)大學(xué)第一批招聘20人 (高層次人才崗位)筆試備考試題及答案解析
- 2026福建南平市建陽(yáng)區(qū)緊缺急需學(xué)科教師專項(xiàng)招聘16人參考考試題庫(kù)及答案解析
- 2026江蘇省數(shù)據(jù)集團(tuán)數(shù)字科技有限公司招聘筆試備考試題及答案解析
- 重生之我在古代當(dāng)皇帝-高二上學(xué)期自律主題班會(huì)課件
- 膀胱切開(kāi)取石術(shù)護(hù)理查房
- GB/T 45355-2025無(wú)壓埋地排污、排水用聚乙烯(PE)管道系統(tǒng)
- 2024-2025學(xué)年人教版初中地理七年級(jí)下冊(cè)課件 第7章 第1節(jié) 自然環(huán)境
- 物業(yè)移交表格樣本模板
- 《新生兒機(jī)械通氣》課件
- 《水處理用活性焦吸附再生工藝》
- DB 23T 1501-2013 水利堤(岸)坡防護(hù)工程格賓與雷諾護(hù)墊施工技術(shù)規(guī)范
- 《保險(xiǎn)公司主持技巧》課件
- 江蘇省揚(yáng)州市2021屆高三考前調(diào)研測(cè)試數(shù)學(xué)試卷
- (2024年)農(nóng)作物病蟲(chóng)害綠色防控技術(shù)課件
評(píng)論
0/150
提交評(píng)論