邻接矩阵建立图
来源:互联网 发布:towedm线切割编程系统 编辑:程序博客网 时间:2024/06/06 04:21
通过构造N阶矩阵(二维数组),每个数组的元素存放边的权重。图结点和边都通过结构体构造。
其中,通过边结点(定义一个作为缓存结点,每次通过该结点保存边的起点,终点,权重 ),将数据通过函数保存到图结点中即可。
/* 图的邻接矩阵表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */#define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/typedef int Vertex; /* 用顶点下标表示顶点,为整型 */typedef int WeightType; /* 边的权值设为整型 */typedef char DataType; /* 顶点存储的数据类型设为字符型 *//* 边的定义 */typedef struct ENode *PtrToENode;struct ENode{ Vertex V1, V2; /* 有向边<V1, V2> ,作为图结点的二维数组的下表,由V1->v2*/ WeightType Weight; /* 权重 */};typedef PtrToENode Edge;/* 图结点的定义 */typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */ DataType Data[MaxVertexNum]; /* 存顶点的数据 */ /* 注意:很多情况下,顶点无数据,此时Data[]可以不用出现 */};typedef PtrToGNode MGraph; /* 以邻接矩阵存储的图类型 */MGraph CreateGraph( int VertexNum ){ /* 初始化一个有VertexNum个顶点但没有边的图 */ Vertex V, W; MGraph Graph; Graph = (MGraph)malloc(sizeof(struct GNode)); /* 建立图 */ Graph->Nv = VertexNum; Graph->Ne = 0; /* 初始化邻接矩阵 */ /* 注意:这里默认顶点编号从0开始,到(Graph->Nv - 1) */ for (V=0; V<Graph->Nv; V++) for (W=0; W<Graph->Nv; W++) Graph->G[V][W] = INFINITY; return Graph; }void InsertEdge( MGraph Graph, Edge E ){ /* 插入边 <V1, V2> */ Graph->G[E->V1][E->V2] = E->Weight; /* 若是无向图,还要插入边<V2, V1> */ Graph->G[E->V2][E->V1] = E->Weight;}MGraph BuildGraph(){ MGraph Graph; Edge E; Vertex V; int Nv, i; scanf("%d", &Nv); /* 读入顶点个数 */ Graph = CreateGraph(Nv); /* 初始化有Nv个顶点但没有边的图 */ scanf("%d", &(Graph->Ne)); /* 读入边数 */ if ( Graph->Ne != 0 ) { /* 如果有边 */ E = (Edge)malloc(sizeof(struct ENode)); /* 建立边结点 */ /* 读入边,格式为"起点 终点 权重",插入邻接矩阵 */ for (i=0; i<Graph->Ne; i++) { scanf("%d %d %d", &E->V1, &E->V2, &E->Weight); /* 注意:如果权重不是整型,Weight的读入格式要改 */ InsertEdge( Graph, E ); } } /* 如果顶点有数据的话,读入数据 */ for (V=0; V<Graph->Nv; V++) scanf(" %c", &(Graph->Data[V])); return Graph;}
阅读全文
0 0
- 图的邻接矩阵建立
- 邻接矩阵建立图
- 图---邻接矩阵(建立,深度遍历,广度遍历)
- 图的建立(邻接矩阵表示)
- 图的邻接矩阵的建立以及遍历
- 图---邻接矩阵(建立,深度遍历,广度遍历)
- 图的邻接矩阵建立,广度深度搜索
- 图的邻接矩阵建立以及遍历方法
- 图之 宽度优先遍历 DFS 邻接矩阵建立的图
- 建立图的存储结构 :邻接表 和 邻接矩阵
- 图的邻接矩阵的建立(C语言实现)
- 图的邻接矩阵的建立以及遍历操作
- 图--邻接矩阵
- 图---邻接矩阵
- 图-邻接矩阵
- 图 - 邻接矩阵
- 图-邻接矩阵
- 第七章 图(邻接矩阵和邻接表建立图并实现DFS、BFS)
- maven 阿里云 国内镜像 中央仓库 亲测可用
- 套路那么深,我的内心是崩溃的……
- (7)java代码实现微信消息交互案例
- Trie树(字典树)_实现模糊查找(支持中文)
- synchronized 线程同步-类级别锁定
- 邻接矩阵建立图
- 年轻时最该懂的五个道理,不是读书能学来的
- 安装和使用PhantomJS
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 9月3日三天训练
- 台湾大学林轩田机器学习基石笔记(一)
- shell脚本中一些特殊符号
- android 百度地图 定位获取位置失败 62错误
- 1001. 害死人不偿命的(3n+1)猜想