




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)報(bào)告課程名:數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)驗(yàn)名:圖的遍歷姓 名: 班 級(jí): 學(xué) 號(hào): 時(shí) 間:2014.11.15一 實(shí)驗(yàn)?zāi)康呐c要求1. 掌握?qǐng)D的遍歷的方法2. 利用 C 語(yǔ)言實(shí)現(xiàn)圖的遍歷二 實(shí)驗(yàn)內(nèi)容 將一個(gè)圖存儲(chǔ)起來(lái) 對(duì)該圖分別進(jìn)行先深和先廣遍歷三 實(shí)驗(yàn)結(jié)果與分析程序:#include <stdlib.h>#include <stdio.h>#define INFINITY 32767#define MAX_VEX 20 /最大頂點(diǎn)個(gè)數(shù)#define QUEUE_SIZE (MAX_VEX+1) /隊(duì)列長(zhǎng)度/using namespace std
2、;bool *visited; /訪問(wèn)標(biāo)志數(shù)組,避免同一頂點(diǎn)多次訪問(wèn)/*圖的鄰接矩陣存儲(chǔ)結(jié)構(gòu)*/typedef struct char *vexs; /頂點(diǎn)向量 int arcsMAX_VEXMAX_VEX; /鄰接矩陣 int vexnum,arcnum; /圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù)Graph;/*隊(duì)列類(lèi)*/class Queue public: void InitQueue() base=(int *)malloc(QUEUE_SIZE*sizeof(int); front=rear=0; void EnQueue(int e) baserear=e; rear=(rear+1)%QUEUE_
3、SIZE; void DeQueue(int &e) e=basefront; front=(front+1)%QUEUE_SIZE; public: int *base; int front; int rear;/*圖G中查找元素c的位置*/int Locate(Graph G,char c) for(int i=0;i<G.vexnum;i+) if(G.vexsi=c) return i; return -1;/*創(chuàng)建無(wú)向網(wǎng)*/void CreateUDN(Graph &G) int i,j,w,s1,s2; char a,b,temp; printf("
4、輸入頂點(diǎn)數(shù)和弧數(shù):"); scanf("%d%d",&G.vexnum,&G.arcnum); temp=getchar(); /接收回車(chē) G.vexs=(char *)malloc(G.vexnum*sizeof(char); /分配頂點(diǎn)數(shù)目 printf("輸入%d個(gè)頂點(diǎn).n",G.vexnum); for(i=0;i<G.vexnum;i+) /初始化頂點(diǎn) printf("輸入頂點(diǎn)%d:",i); scanf("%c",&G.vexsi); temp=getchar()
5、; /接收回車(chē) for(i=0;i<G.vexnum;i+) /初始化鄰接矩陣 for(j=0;j<G.vexnum;j+) G.arcsij=INFINITY; printf("輸入%d條弧.n",G.arcnum); for(i=0;i<G.arcnum;i+) /初始化弧 printf("輸入弧%d:",i); scanf("%c %c %d",&a,&b,&w); /輸入一條邊依附的頂點(diǎn)和權(quán)值 temp=getchar(); /接收回車(chē) s1=Locate(G,a); s2=Locat
6、e(G,b); G.arcss1s2=G.arcss2s1=w; /*圖G中頂點(diǎn)k的第一個(gè)鄰接頂點(diǎn)*/int FirstVex(Graph G,int k) if(k>=0 && k<G.vexnum) /k合理 for(int i=0;i<G.vexnum;i+) if(G.arcski!=INFINITY) return i; return -1;/*圖G中頂點(diǎn)i的第j個(gè)鄰接頂點(diǎn)的下一個(gè)鄰接頂點(diǎn)*/int NextVex(Graph G,int i,int j) if(i>=0 && i<G.vexnum &&
7、j>=0 && j<G.vexnum) /i,j合理 for(int k=j+1;k<G.vexnum;k+) if(G.arcsik!=INFINITY) return k; return -1;/*深度優(yōu)先遍歷*/void DFS(Graph G,int k) int i; if(k=-1) /第一次執(zhí)行DFS時(shí),k為-1 for(i=0;i<G.vexnum;i+) if(!visitedi) DFS(G,i); /對(duì)尚未訪問(wèn)的頂點(diǎn)調(diào)用DFS else visitedk=true; printf("%c ",G.vexsk);
8、/訪問(wèn)第k個(gè)頂點(diǎn) for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i) if(!visitedi) DFS(G,i); /對(duì)k的尚未訪問(wèn)的鄰接頂點(diǎn)i遞歸調(diào)用DFS /*廣度優(yōu)先遍歷*/void BFS(Graph G) int k; Queue Q; /輔助隊(duì)列Q Q.InitQueue(); for(int i=0;i<G.vexnum;i+) if(!visitedi) /i尚未訪問(wèn) visitedi=true; printf("%c ",G.vexsi); Q.EnQueue(i); /i入列 while(Q.front!=Q
9、.rear) Q.DeQueue(k); /隊(duì)頭元素出列并置為k for(int w=FirstVex(G,k);w>=0;w=NextVex(G,k,w) if(!visitedw) /w為k的尚未訪問(wèn)的鄰接頂點(diǎn) visitedw=true; printf("%c ",G.vexsw); Q.EnQueue(w); /*主函數(shù)*/void main() int i; Graph G; CreateUDN(G); visited=(bool *)malloc(G.vexnum*sizeof(bool); printf("n廣度優(yōu)先遍歷: "); for(i=0;i<
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工程合同協(xié)議審批會(huì)簽單
- 《找規(guī)律》(教案)北師大版三年級(jí)下冊(cè)數(shù)學(xué)
- 農(nóng)村建房合同協(xié)議書(shū)電子版(2025年版)
- 第13課 網(wǎng)絡(luò)安全防范 教學(xué)設(shè)計(jì) 2024-2025學(xué)年浙教版(2023)初中信息技術(shù)八年級(jí)上冊(cè)
- 第五單元-解決問(wèn)題的策略-(單元測(cè)試)-蘇教版數(shù)學(xué)三年級(jí)上冊(cè)(含解析)
- 2023年現(xiàn)場(chǎng)總線智能儀表投資申請(qǐng)報(bào)告
- 2025年廣西演藝職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完整版
- 2024年電工儀器儀表項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2025年黑龍江省單招職業(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 2025陜西省建筑安全員-A證考試題庫(kù)附答案
- 【《蘇泊爾公司存貨管理的優(yōu)化建議分析》13000字論文】
- 2024年車(chē)載SoC發(fā)展趨勢(shì)及TOP10分析報(bào)告-2024-09-零部件
- 伽馬數(shù)據(jù):2024年中國(guó)游戲產(chǎn)業(yè)趨勢(shì)及潛力分析報(bào)告
- 北師大版八年級(jí)生物下冊(cè)全冊(cè)課件(2024年春季版)
- 高一英語(yǔ)完形填空專項(xiàng)訓(xùn)練100(附答案)及解析
- 機(jī)房基礎(chǔ)設(shè)施運(yùn)行維護(hù)管理標(biāo)準(zhǔn)規(guī)范
- 收費(fèi)站稽查管理制度
- 老年心房顫動(dòng)診治中國(guó)專家共識(shí)(2024)解讀
- NB-T31056-2014風(fēng)力發(fā)電機(jī)組接地技術(shù)規(guī)范
- 部編版八年級(jí)上冊(cè)歷史期中復(fù)習(xí)重點(diǎn)總結(jié)
- DL5190.5-2019電力建設(shè)施工技術(shù)規(guī)范第5部分:管道及系統(tǒng)
評(píng)論
0/150
提交評(píng)論