邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn} [1] 。G的邻接矩阵是一个具有下列性质的n阶方阵:
①对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零(在此仅讨论无向简单图),副对角线不一定为0,有向图则不一定如此。
②在无向图中,任一顶点i的度为第i列(或第i行)所有非零元素的个数,在有向图中顶点i的出度为第i行所有非零元素的个数,而入度为第i列所有非零元素的个数。
③用邻接矩阵法表示图共需要n^2个空间,由于无向图的邻接矩阵一定具有对称关系,所以扣除对角线为零外,仅需要存储上三角形或下三角形的数据即可,因此仅需要n(n-1)/2个空间。

关于图的实现方法,除了邻接矩阵还有邻接表等方法,会在后续博客中写出
邻接矩阵(即数组)来实现图难度不高,步骤分析如下:


第一步:
建立邻接矩阵

struct GNode{int Nv;//图的顶点数int Ne;//图的边数int G[MaxVertexNum][MaxVertexNum];//二维数组
};
typedef struct GNode *PtrToGNode;//此为指向GNode的指针
typedef PtrToGNode MGraph;//定义为MGraph

第二步:
初始化图

typedef int Vertex;
MGraph CreateGraph(int VertexNum){Vertex v,w;MGraph Graph;Graph=(MGraph)malloc(sizeof(struct GNode));Graph->Nv=VertexNum;Graph->Ne=0;//顶点默认从编号0开始for(v=0;v<Graph->Nv;v++){for(w=0;w<Graph->Nv;w++){Graph->G[v][w]=0;}} return Graph;
}

第三步:
定义边以及定义插入边函数

struct ENode{Vertex v1,v2;//顶点v1,v2 int Weight;
};typedef struct ENode *PtrToENode;
typedef PtrToENode Edge;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;printf("请输入顶点数:");scanf("%d",&Nv);Graph=CreateGraph(Nv);print("请输入边数:");scanf("%d",&Graph->Ne);if(Graph->Ne!=0){E=(Edge)malloc(sizeof(struct ENode));for(i=0;i<Graph->Ne;i++){printf("请输入两个顶点与边的权重,用空格分隔输入\n"); scanf("%d%d%d",&E->v1,&E->v2,&E->Weight);InsertEdge(Graph,E);}}}

这样就完成了一个简单的邻接矩阵图的建立了。此处没有考虑顶点需要存储数据的情况,可自行添加代码完善噢。

                                                     By Dewitt

**

数据结构——邻接矩阵表示图(c语言)相关推荐

  1. Java数据结构——邻接矩阵+邻接表

    文章目录 一.邻接矩阵 二.邻接表 一.邻接矩阵 1. 定义 vexs[](存储顶点)和 arcs[][](存储边关系,叫邻接矩阵)集合.因此,用一个一维数组存放图中所有顶点数据: 用一个二维数组存放 ...

  2. 数据结构深度优先搜索c语言,C语言数据结构与算法之深度、广度优先搜索

    一.深度优先搜索(Depth-First-Search 简称:DFS) 1.1 遍历过程: (1)从图中某个顶点v出发,访问v. (2)找出刚才第一个被顶点访问的邻接点.访问该顶点.以这个顶点为新的顶 ...

  3. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

  4. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  5. 《数据结构与算法 C语言版》—— 2.7习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...

  6. 数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss

    数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss 可用于自学数据结构与算法,数据结构与算法分析对于C++的学习至关重要,应该努力掌握好! 百度网盘: 链接:https://p ...

  7. python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...

    ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...

  8. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  9. 数据结构---邻接矩阵的BFS

    数据结构-邻接矩阵的BFS 原理:参考趣学数据结构 代码: 队列代码: #pragma once #define elemType int #define N 100 #include<stdl ...

最新文章

  1. Linux操作系统CentOS7.2发行版本的安装与配置
  2. linux配置nginx虚拟目录
  3. 框架:SpringBoot构建Restful service完成Get和Post请求
  4. NIO 之 ByteBuffer实现原理
  5. 我去德国出差后学习的一些德语
  6. java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...
  7. 计算机原理转移指令题,转移指令计算机原理.pdf
  8. mips汇编计算开方_东南大学计算机系统综合设计MOOC第5期开课
  9. r软件 image画出来的图是颠倒的_如何用Python抠图?试试scikitimage
  10. html在线时间24小时代码,每24小时弹一次的HTML代码
  11. 【报告分享】2022年私域电商平台趋势报告.pdf(附下载链接)
  12. 电脑cpu和手机cpu的差距有多大?
  13. 客户读取文件服务器上文件的过程,java从服务器上读取文件
  14. Netapp存储日常检查及信息收集
  15. vivado添加设计源文件
  16. 如何生成微信小程序码(获取微信小程序码)
  17. 万能设配器代码 带加载更多
  18. DPM learn.cc编译
  19. 嵌入式 - 瑞萨宣讲
  20. 真无线蓝牙耳机盘点,2020新款游戏低延迟高续航蓝牙耳机

热门文章

  1. C++ 上机实验(二)【继承与多态】
  2. starling 笔记
  3. DirectShow AVI 文件操作【转】
  4. abaqus中英文切换
  5. 氢os android 7.0,迄今最干净的国产安卓7.0系统 氢OS体验
  6. Windos下用setx.exe命令行模式下永久设置系统环境变量(转)
  7. 观点丨加密世界的演化:五年时间走了多远?
  8. 开源免费,捷微H5活动平台(微砍价、九宫格、斧头帮、摇一摇送卡券) h5huodong.com
  9. 青龙面板-快手极速版教程
  10. python错误与异常(try/except 和 try/except...else)