数据结构 二维码文件第4章主要算法的C++代码.doc
《数据结构 二维码文件第4章主要算法的C++代码.doc》由会员分享,可在线阅读,更多相关《数据结构 二维码文件第4章主要算法的C++代码.doc(16页珍藏版)》请在汇文网上搜索。
1、第4章主要算法的C+代码实验1:图的存储1图的邻接矩阵存储及输出。#include using namespace std; typedef char VertexType; /顶点类型应由用户定义typedef int EdgeType; /边上的权值类型应由用户定义 #define MAXVEX 10 /最大顶点数,应由用户定义 typedef struct VertexType vexsMAXVEX; /顶点表 EdgeType arcMAXVEXMAXVEX; /邻接矩阵,可看作边 int numVertexes, numEdges; /图中当前的顶点数和边数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;/建立一个无向网图的邻接矩阵表示void CreateGraph(Graph *g) int i, j, k, w; cout输入顶点数和边数:g-numVertexesg-numEdges; cout请输入顶点名称,每个顶点用单个字母或单个数字表示,并以回车键结束:endl; for(i = 0; i numVertexes
3、; i+) g-vexsi = getchar(); while(g-vexsi = n) g-vexsi = getchar(); cout你输入的顶点是:; 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)上的顶点i名称,顶点j名称和权值,每个输入后面以回键结束: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; /因为是无向图,矩阵对称 /打印图void printGraph(Graph g) int i, j; cout这个邻接矩阵为: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); /邻接矩阵创建图 printGraph(g); return 0;2图的邻接表存储及输出。/* 邻接表表示的图结构 */#include using namespace std; #define DEBUG#define MAXVEX 1000 /最大顶点数typedef char VertexType; /顶点类型应由用户定义typedef int EdgeType; /边上的权值类型应由用户定义 typedef struct EdgeNode /
6、边表结点 int adjvex; /邻接点域,存储该顶点对应的下标 EdgeType weigth; /用于存储权值,对于非网图可以不需要 struct EdgeNode *next; /链域,指向下一个邻接点EdgeNode; typedef struct VertexNode /顶点表结构 VertexType data; /顶点域,存储顶点信息 EdgeNode *firstedge; /边表头指针VertexNode, AdjListMAXVEX; typedef struct AdjList adjList; int numVertexes, numEdges; /图中当前顶点数和边
7、数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; /建立图的邻接表结构void CreateGraph(GraphList *g) int i, j, k; EdgeNode *e; EdgeNode *f; coutg-numVertexesg-numEdges; cout请输入少于10个顶点,每个顶点用单个字母或单个数字
8、表示,并以回车键结束:endl; for(i = 0; i numVertexes; i+) g-adjListi.data = getchar(); /输入顶点信息 g-adjListi.firstedge = NULL; /将边表置为空表 while(g-adjListi.data = n) g-adjListi.data = getchar(); for(k = 0; k numEdges; k+) /建立边表 cout输入边(vi,vj)上的顶点序号及权值:w; int m, n; m = Locate(g, p); n = Locate(g, q); if(m = -1 | n =
9、-1) return; /向内存申请空间,生成边表结点 e = (EdgeNode *)malloc(sizeof(EdgeNode); if(e = NULL) fprintf(stderr, malloc() error.n); return; e-adjvex = n; /邻接序号为n /将e指针指向当前顶点指向的结构 e-weigth=w; /权值为w e-next = g-adjListm.firstedge; /将当前顶点的指针指向e g-adjListm.firstedge = e; f = (EdgeNode *)malloc(sizeof(EdgeNode); if(f =
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载共享资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二维码文件第4章主要算法的C+代码 二维码 文件 主要 算法 C+ 代码