版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《數(shù)據(jù)結(jié)構(gòu)》課程實(shí)驗(yàn)報(bào)告 題目:圖遍歷的演示 班級(jí): 姓名: 學(xué)號(hào): 專業(yè): 學(xué)院: 完成日期:需求分析問題描述:很多涉及圖上操作的算法都是以圖的遍歷操作作為基礎(chǔ)的。試寫一個(gè)程序,演示在連通圖的無向圖上訪問全部結(jié)點(diǎn)的操作?;疽螅阂脏徑佣嘀乇恚ㄟx作內(nèi)容鄰接表)為存儲(chǔ)結(jié)構(gòu),實(shí)現(xiàn)連通無向圖的深度優(yōu)先遍歷和廣度優(yōu)先遍歷。以用戶指定的結(jié)點(diǎn)為起點(diǎn),分別輸出每種遍歷下的結(jié)點(diǎn)訪問序列和相應(yīng)生成樹的邊集輸入的形式和輸入的范圍:先輸入頂點(diǎn)數(shù)N以及邊數(shù)M,然后依次輸入N個(gè)頂點(diǎn),再按提示輸入M條邊的信息用(a-b3)類似的形式測(cè)試數(shù)據(jù):教科書圖7.33部分信息概要設(shè)計(jì)抽象數(shù)據(jù)類型圖的定義:ADTGraph{數(shù)據(jù)對(duì)象V:V是具有相同特性的的數(shù)據(jù)元素的集合,成為頂點(diǎn)集。數(shù)據(jù)關(guān)系R:R={VR}VR={<v,w>|v,w?V且P(v,w),<v,w>表示從v到w的弧,謂詞P(v,w)定義了弧<v,w>的意義或信息}基本操作P:locatevex(G,mes);初始條件:圖G存在,mes和G中頂點(diǎn)有相同的特征。操作結(jié)果:若G中存在頂點(diǎn)u,則返回該頂點(diǎn)在圖中位置;否則返回其他信息。createudn(&G);初始條件:圖G存在。操作結(jié)果:創(chuàng)建無向圖。createdn(&G);初始條件:圖G存在。操作結(jié)果:創(chuàng)建有向圖。createudg(&G);初始條件:圖G存在操作結(jié)果:創(chuàng)建無向網(wǎng)。createdg(&G);初始條件:圖G存在。操作結(jié)果:創(chuàng)建有向網(wǎng)。DFS(G,v);初始條件:圖G已經(jīng)存在并被賦值,v是圖中某個(gè)頂點(diǎn)的位置坐標(biāo)。操作結(jié)果:深度優(yōu)先搜索遍歷圖G,訪問頂點(diǎn)時(shí)使用函數(shù)visit.BFS(G,v);初始條件:圖G已經(jīng)存在并被賦值,v是圖中某個(gè)頂點(diǎn)的位置坐標(biāo)。操作結(jié)果:廣度優(yōu)先搜索遍歷圖G,訪問頂點(diǎn)時(shí)使用函數(shù) rear=(rear+1)%QUEUE_SIZE;//rear后移} voidDeQueue(int&e){//若隊(duì)列不空,則刪除對(duì)頭元素,用e返回 e=base[front]; front=(front+1)%QUEUE_SIZE;} public:int*base;intfront;intrear;};查找定位函數(shù)intLocate(GraphG,charc){//圖G中查找元素c的位置 for(inti=1;i<=G.vexnum;i++){if(G.vexs[i]==c) returni; } return-1;}初始化無向圖函數(shù)voidCreateUDN(Graph&G){//創(chuàng)建無向圖inti,j,w,s1,s2; chara,b,temp;cout<<"輸入頂點(diǎn)的總數(shù)和邊的總數(shù):";cin>>G.vexnum>>G.arcnum;temp=getchar();//接收回車G.vexs=(char*)malloc(G.vexnum*sizeof(char));//分配頂點(diǎn)數(shù)目cout<<"輸入"<<G.vexnum<<"個(gè)頂點(diǎn)分別為:"<<endl;for(i=1;i<=G.vexnum;i++){//初始化頂點(diǎn)cout<<"頂點(diǎn):"<<i; cin>>&G.vexs[i]; temp=getchar(); }for(i=1;i<=G.vexnum;i++)//初始化鄰接矩陣for(j=1;j<=G.vexnum;j++)G.arcs[i][j]=INFINITY;//16int類型,初始化邊為無窮大cout<<"輸入"<<G.arcnum<<"條邊分別為:"<<endl;//讀取邊信息并初始化集合for(i=1;i<=G.arcnum;i++){//初始化邊cout<<"邊"<<i<<endl;scanf("%c-%c%d",&a,&b,&w);//輸入邊和權(quán)值temp=getchar();//接收回車s1=Locate(G,a); s2=Locate(G,b);G.arcs[s1][s2]=G.arcs[s2][s1]=w;}//無向}intFirstVex(GraphG,intk){//圖G中頂點(diǎn)k的第一個(gè)鄰接頂點(diǎn) if(k>=1&&k<=G.vexnum){for(inti=1;i<=G.vexnum;i++)if(G.arcs[k][i]!=INFINITY) returni; }return-1;}intNextVex(GraphG,inti,intj){//圖G中頂點(diǎn)i的第j個(gè)鄰接頂點(diǎn)的下一個(gè)鄰接頂點(diǎn) if(i>=1&&i<=G.vexnum&&j>=1&&j<=G.vexnum){//i,j合理for(intk=j+1;k<=G.vexnum;k++)if(G.arcs[i][k]!=INFINITY) returnk; }return-1;}深度優(yōu)先遍歷及廣度優(yōu)先遍歷函數(shù)voidDFS(GraphG,intk){//深度優(yōu)先搜索inti; if(k==-1){//第一次執(zhí)行DFS時(shí),k為-1for(i=1;i<=G.vexnum;i++) if(!visited[i]) DFS(G,i); }//對(duì)尚未訪問的頂點(diǎn)調(diào)用DFSelse{visited[k]=true;//訪問第k個(gè)頂點(diǎn)cout<<G.vexs[k];for(i=FirstVex(G,k);i>=1;i=NextVex(G,k,i))if(!visited[i]) DFS(G,i); }}voidBFS(GraphG){//廣度優(yōu)先搜索intk;QueueQ;//輔助隊(duì)列QQ.InitQueue();for(inti=0;i<=G.vexnum;i++)if(!visited[i]){//i尚未訪問visited[i]=true; cout<<G.vexs[i];Q.EnQueue(i);//i入列while(Q.front!=Q.rear){Q.DeQueue(k);//隊(duì)頭元素出列并置為kfor(intw=FirstVex(G,k);w>=0;w=NextVex(G,k,w)) if(!visited[w]){//w為k的尚未訪問的鄰接頂點(diǎn)visited[w]=true; cout<<G.vexs[w];Q.EnQueue(w); } } } }主函數(shù)voidmain(){//主函數(shù)inti; GraphG; CreateUDN(G);//創(chuàng)建無向圖visited=(bool*)malloc(G.vexnum*sizeof(bool));cout<<endl<<"深度優(yōu)先搜索結(jié)果為:";for(i=1;i<=G.vexnum;i++){ visited[i]=false;//標(biāo)志數(shù)組初始化為false DFS(G,-1);}cout<<endl<<"廣度優(yōu)先
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024煤炭環(huán)保居間監(jiān)督合同3篇
- 2025版家用空調(diào)安裝與節(jié)能環(huán)保技術(shù)咨詢合同3篇
- 2025年院長(zhǎng)在醫(yī)院二甲評(píng)審迎評(píng)動(dòng)員會(huì)上的講話例文(3篇)
- 2025版海洋工程建設(shè)項(xiàng)目合同范本(含海洋資源開發(fā)條款)2篇
- 2024年離婚雙方權(quán)利義務(wù)明確協(xié)議
- 2024年適用:寵物貓領(lǐng)養(yǎng)確認(rèn)協(xié)議
- 2024年教育貸款展期還款協(xié)議及其還款計(jì)劃調(diào)整機(jī)制3篇
- 2025年慶祝六一兒童節(jié)發(fā)言稿(5篇)
- 2025版酒水廣告宣傳合作合同2篇
- 活動(dòng)策劃部崗位職責(zé)模版(2篇)
- 《全腦速讀記憶講座》課件
- 上海市產(chǎn)業(yè)園區(qū)規(guī)劃及招商引資策略研究報(bào)告目錄
- 小兒預(yù)防接種過敏性休克
- 未足月胎膜早破查房
- 人工智能在體育訓(xùn)練與競(jìng)技分析中的應(yīng)用
- 年產(chǎn)30萬噸高鈦渣生產(chǎn)線技改擴(kuò)建項(xiàng)目環(huán)評(píng)報(bào)告公示
- 07221美術(shù)設(shè)計(jì)與創(chuàng)意
- 2023年拓展加盟經(jīng)理年終總結(jié)及下一年計(jì)劃
- 網(wǎng)絡(luò)安全技術(shù)及應(yīng)用 第5版 習(xí)題及答案 賈鐵軍 習(xí)題集 第1章
- 有限空間作業(yè)審批表
- 認(rèn)罪認(rèn)罰悔罪書(4篇)
評(píng)論
0/150
提交評(píng)論