代码如下:

/* 图的邻接矩阵表示法 */#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> */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;
}

图的建立-邻接矩阵表示(C语言)相关推荐

  1. 无向有权图的建立(邻接链表法) 广度优先搜索 深度优先搜素

    /**图的邻接表存储方式*/#include<iostream> #include<cstdio> #include<string.h> #include<s ...

  2. 图的建立-邻接表表示(C语言)

    代码如下: /* 图的邻接表表示法 */#define MaxVertexNum 100 /* 最大顶点数设为100 */ typedef int Vertex; /* 用顶点下标表示顶点,为整型 * ...

  3. 【图论】图的建立——邻接矩阵法

    G[i][j]:表示顶点i->j的边权 若边权为0.-1.或一个很大的数,表示边不存在 适用于顶点数较小的题(一般不超过100) 1.图的定义 顶点数.边数.权 2.初始化一个有顶点但没有边的图 ...

  4. java 图的邻接矩阵表示,深度优先遍历,广度优先遍历

    转载:http://blog.csdn.net/yxmmao/article/details/51586540 1 . 创建图的邻接矩阵数据结构 public class MGraph {/*图的邻接 ...

  5. 图:邻接矩阵表示法创建无向图并深度优先搜索遍历

    无向图样式: 邻接矩阵法类似于用数组储存,一个一维数组储存顶点信息,还有一个二维数组储存邻接矩阵 用邻接矩阵进行无向图的创建过程: 一,输入总顶点数和边数(几个点,几条边) eg:如图所示即为8点,9 ...

  6. java布尔矩阵程序_Java编程实现邻接矩阵表示稠密图代码示例

    我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法. 我们假设A是这个二维数组,那 ...

  7. 数据结构(廿六) -- C语言版 -- 图 - 图的遍历 -- 邻接表 - 深度/广度优先遍历/搜索(DFS、BFS)

    内容预览 零.读前说明 一.深度优先遍历 1.1.深度优先的遍历过程 1.2.深度优先的遍历实现代码 二.广度优先遍历 2.1.广度优先的遍历过程 2.2.广度优先的遍历实现代码 三.源码测试效果 3 ...

  8. MatLab图的最小路径(邻接矩阵表示)

    使用邻接矩阵表示有向图或无向图,对其进行最小路径的查询以及权值计算 采用递归算法,首先定义输入参数有 邻接矩阵.起始点.终止点.已走完的路长.当前已知最小路长: function [result, p ...

  9. 图的建立(邻接矩阵)与其深度优先和广度优先遍历

    建立一个有向图或无向图,输入其顶点数,边数,并给出相应边的权值,输出该图对应的邻接矩阵,并用递归实现其深度优先遍历和用队列实现其广度优先遍历后的结果. 图的遍历 从给定图中任意指定的顶点(称为初始点) ...

最新文章

  1. varnish 缓存php,Varnish Cache不会使用会话缓存PHP除非后端TTL被更改
  2. Sublime Text Package Control错误另解
  3. 将查询结果插入到现有表中
  4. nginx后端节点健康检查
  5. (2021年)IT技术分享社区个人文章汇总(数据库篇)
  6. DataV:可视化大屏展示神器实战分享
  7. dotnet core 开发无缝兼容Http和Websocket协议的接口服务
  8. 平台表单默认按钮的使用及效果展示——JEPLUS软件快速开发平台
  9. XGBoost原理及在Python中使用XGBoost
  10. React:工程化开发
  11. 黑白风格android,颜色风格略不同 黑白华为Mate对比图赏
  12. python读取excel数据为矩阵_用Python实现excel中“矩阵”式列表转“向量”式列表...
  13. Matlab的自相关函数corr
  14. 什么是容器服务_即学即用Docker(一):说说容器和Docker
  15. python 绘制损失函数曲线_绘制loss曲线
  16. 我也说说《变形金刚》2
  17. HTML的相关标记和属性
  18. C++入门总结(一)
  19. [数据可视化] 雷达图(Radar)
  20. python 查看kafka发送的消息格式及消息内容

热门文章

  1. ArcGIS实验教程——实验二十二:空间数据符号化
  2. SQL Server CLR 集成简介
  3. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。
  4. C语言试题二十之利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
  5. python 实现原型设计模式
  6. unity5.x Translate平移移动 以及GetComponent获取组件
  7. 阿里云500服务器内部错误,腾讯云服务器网站不能打开 提示内部错误http 500
  8. 男厕改女厕能多敷衍......
  9. 数学到底有多难难难难?看完这个,瞬间觉得智商都提高了!
  10. 影子的变化情况到底如何?和太阳又有什么关系?