




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實驗報告課程名:數(shù)據(jù)結(jié)構(gòu)(C語言版)實驗名:圖的遍歷姓 名: 班 級: 學 號: 時 間:2014.11.15一 實驗目的與要求1. 掌握圖的遍歷的方法2. 利用 C 語言實現(xiàn)圖的遍歷二 實驗內(nèi)容 將一個圖存儲起來 對該圖分別進行先深和先廣遍歷三 實驗結(jié)果與分析程序:#include <stdlib.h>#include <stdio.h>#define INFINITY 32767#define MAX_VEX 20 /最大頂點個數(shù)#define QUEUE_SIZE (MAX_VEX+1) /隊列長度/using namespace std
2、;bool *visited; /訪問標志數(shù)組,避免同一頂點多次訪問/*圖的鄰接矩陣存儲結(jié)構(gòu)*/typedef struct char *vexs; /頂點向量 int arcsMAX_VEXMAX_VEX; /鄰接矩陣 int vexnum,arcnum; /圖的當前頂點數(shù)和弧數(shù)Graph;/*隊列類*/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ǎng)*/void CreateUDN(Graph &G) int i,j,w,s1,s2; char a,b,temp; printf("
4、輸入頂點數(shù)和弧數(shù):"); scanf("%d%d",&G.vexnum,&G.arcnum); temp=getchar(); /接收回車 G.vexs=(char *)malloc(G.vexnum*sizeof(char); /分配頂點數(shù)目 printf("輸入%d個頂點.n",G.vexnum); for(i=0;i<G.vexnum;i+) /初始化頂點 printf("輸入頂點%d:",i); scanf("%c",&G.vexsi); temp=getchar()
5、; /接收回車 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); /輸入一條邊依附的頂點和權(quán)值 temp=getchar(); /接收回車 s1=Locate(G,a); s2=Locat
6、e(G,b); G.arcss1s2=G.arcss2s1=w; /*圖G中頂點k的第一個鄰接頂點*/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中頂點i的第j個鄰接頂點的下一個鄰接頂點*/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時,k為-1 for(i=0;i<G.vexnum;i+) if(!visitedi) DFS(G,i); /對尚未訪問的頂點調(diào)用DFS else visitedk=true; printf("%c ",G.vexsk);
8、/訪問第k個頂點 for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i) if(!visitedi) DFS(G,i); /對k的尚未訪問的鄰接頂點i遞歸調(diào)用DFS /*廣度優(yōu)先遍歷*/void BFS(Graph G) int k; Queue Q; /輔助隊列Q Q.InitQueue(); for(int i=0;i<G.vexnum;i+) if(!visitedi) /i尚未訪問 visitedi=true; printf("%c ",G.vexsi); Q.EnQueue(i); /i入列 while(Q.front!=Q
9、.rear) Q.DeQueue(k); /隊頭元素出列并置為k for(int w=FirstVex(G,k);w>=0;w=NextVex(G,k,w) if(!visitedw) /w為k的尚未訪問的鄰接頂點 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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園大班下學期期末教學工作總結(jié)匯報范文兩篇
- 鄭州城市職業(yè)學院《基礎(chǔ)西班牙語(II)》2023-2024學年第一學期期末試卷
- 武漢科技職業(yè)學院《劇作基礎(chǔ)》2023-2024學年第一學期期末試卷
- 2025年制造業(yè)數(shù)字化供應鏈協(xié)同智能物流技術(shù)應用研究報告
- 城鄉(xiāng)教育均衡策略-洞察及研究
- 虛擬化平臺下安全意識培訓資源優(yōu)化-洞察及研究
- 小學夏天活動方案
- 小學雙學活動方案
- 定襄民俗活動方案
- 家裝公司成功活動方案
- 國家開放大學漢語言文學本科《中國現(xiàn)代文學專題》期末紙質(zhì)考試第三大題分析題庫2025春期版
- 離婚協(xié)議書 標準版電子版(2025年版)
- 2024北京市昌平區(qū)中考真題生物+答案
- DBJ50-T-098-2019 城市綠化養(yǎng)護質(zhì)量標準
- 手術(shù)室醫(yī)療垃圾的分類
- 教育領(lǐng)域中的信息化技術(shù)討論以小學數(shù)為例
- 綠色施工知識培訓課件
- 《骨盆骨折的急救》課件
- 2025年拍賣師職業(yè)技能知識考試題庫與答案(含各題型)
- 浙江省杭州市六校2023-2024學年高一下學期期末聯(lián)考技術(shù)試卷-高中技術(shù)
- 《人工智能:AIGC基礎(chǔ)與應用》題庫 項選擇題
評論
0/150
提交評論