數(shù)據(jù)結(jié)構(gòu) 二維碼文件第4章主要算法的C++代碼.doc
《數(shù)據(jù)結(jié)構(gòu) 二維碼文件第4章主要算法的C++代碼.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu) 二維碼文件第4章主要算法的C++代碼.doc(16頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、第4章主要算法的C+代碼實(shí)驗(yàn)1:圖的存儲(chǔ)1圖的鄰接矩陣存儲(chǔ)及輸出。#include using namespace std; typedef char VertexType; /頂點(diǎn)類型應(yīng)由用戶定義typedef int EdgeType; /邊上的權(quán)值類型應(yīng)由用戶定義 #define MAXVEX 10 /最大頂點(diǎn)數(shù),應(yīng)由用戶定義 typedef struct VertexType vexsMAXVEX; /頂點(diǎn)表 EdgeType arcMAXVEXMAXVEX; /鄰接矩陣,可看作邊 int numVertexes, numEdges; /圖中當(dāng)前的頂點(diǎn)數(shù)和邊數(shù)Graph; int lo
2、cates(Graph *g, char ch) /定位 int i = 0; for(i = 0; i numVertexes; i+) if(g-vexsi = ch) break; if(i = g-numVertexes) return -1; return i;/建立一個(gè)無向網(wǎng)圖的鄰接矩陣表示void CreateGraph(Graph *g) int i, j, k, w; cout輸入頂點(diǎn)數(shù)和邊數(shù):g-numVertexesg-numEdges; cout請輸入頂點(diǎn)名稱,每個(gè)頂點(diǎn)用單個(gè)字母或單個(gè)數(shù)字表示,并以回車鍵結(jié)束:endl; for(i = 0; i numVertexes
3、; i+) g-vexsi = getchar(); while(g-vexsi = n) g-vexsi = getchar(); cout你輸入的頂點(diǎn)是:; for(i = 0; i numVertexes; i+) coutvexsi; coutendl; for(i = 0; i numEdges; i+) for(j = 0; j numEdges; j+) g-arcij = 0; /鄰接矩陣初始化 for(k = 0; k numEdges; k+) char p, q; cout輸入邊(vi,vj)上的頂點(diǎn)i名稱,頂點(diǎn)j名稱和權(quán)值,每個(gè)輸入后面以回鍵結(jié)束:w; int m =
4、-1; int n = -1; m = locates(g, p); n = locates(g, q); if(n = -1 | m = -1) fprintf(stderr, there is no this vertex.n); return; g-arcmn = w; g-arcnm = g-arcmn; /因?yàn)槭菬o向圖,矩陣對稱 /打印圖void printGraph(Graph g) int i, j; cout這個(gè)鄰接矩陣為:endl; for(i = 0; i g.numVertexes; i+) for(j = 0; j g.numVertexes; j+) cout g.a
5、rcij; coutendl; int main(int argc, char *argv) Graph g; CreateGraph(&g); /鄰接矩陣創(chuàng)建圖 printGraph(g); return 0;2圖的鄰接表存儲(chǔ)及輸出。/* 鄰接表表示的圖結(jié)構(gòu) */#include using namespace std; #define DEBUG#define MAXVEX 1000 /最大頂點(diǎn)數(shù)typedef char VertexType; /頂點(diǎn)類型應(yīng)由用戶定義typedef int EdgeType; /邊上的權(quán)值類型應(yīng)由用戶定義 typedef struct EdgeNode /
6、邊表結(jié)點(diǎn) int adjvex; /鄰接點(diǎn)域,存儲(chǔ)該頂點(diǎn)對應(yīng)的下標(biāo) EdgeType weigth; /用于存儲(chǔ)權(quán)值,對于非網(wǎng)圖可以不需要 struct EdgeNode *next; /鏈域,指向下一個(gè)鄰接點(diǎn)EdgeNode; typedef struct VertexNode /頂點(diǎn)表結(jié)構(gòu) VertexType data; /頂點(diǎn)域,存儲(chǔ)頂點(diǎn)信息 EdgeNode *firstedge; /邊表頭指針VertexNode, AdjListMAXVEX; typedef struct AdjList adjList; int numVertexes, numEdges; /圖中當(dāng)前頂點(diǎn)數(shù)和邊
7、數(shù)GraphList; int Locate(GraphList *g, char ch) int i; for(i = 0; i adjListi.data) break; if(i = MAXVEX) fprintf(stderr,there is no vertex.n); return -1; return i; /建立圖的鄰接表結(jié)構(gòu)void CreateGraph(GraphList *g) int i, j, k; EdgeNode *e; EdgeNode *f; coutg-numVertexesg-numEdges; cout請輸入少于10個(gè)頂點(diǎn),每個(gè)頂點(diǎn)用單個(gè)字母或單個(gè)數(shù)字
8、表示,并以回車鍵結(jié)束:endl; for(i = 0; i numVertexes; i+) g-adjListi.data = getchar(); /輸入頂點(diǎn)信息 g-adjListi.firstedge = NULL; /將邊表置為空表 while(g-adjListi.data = n) g-adjListi.data = getchar(); for(k = 0; k numEdges; k+) /建立邊表 cout輸入邊(vi,vj)上的頂點(diǎn)序號及權(quán)值:w; int m, n; m = Locate(g, p); n = Locate(g, q); if(m = -1 | n =
9、-1) return; /向內(nèi)存申請空間,生成邊表結(jié)點(diǎn) e = (EdgeNode *)malloc(sizeof(EdgeNode); if(e = NULL) fprintf(stderr, malloc() error.n); return; e-adjvex = n; /鄰接序號為n /將e指針指向當(dāng)前頂點(diǎn)指向的結(jié)構(gòu) e-weigth=w; /權(quán)值為w e-next = g-adjListm.firstedge; /將當(dāng)前頂點(diǎn)的指針指向e g-adjListm.firstedge = e; f = (EdgeNode *)malloc(sizeof(EdgeNode); if(f =
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 二維碼文件第4章主要算法的C+代碼 二維碼 文件 主要 算法 C+ 代碼
鏈接地址:http://zhizhaikeji.com/p-43815976.html