图的邻接矩阵存储方式是两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(即为邻接矩阵)存储图中的边或弧的信息
设图G有n个顶点,则邻接矩阵为一个n×n的方阵,定义为:

抽象数据类型如下

typedef struct Graph
{char vexs[MAXSIZE];int arc[MAXSIZE][MAXSIZE];int numVertexes, numEdges;
}MGraph;

我们设置一个顶点数组为vertex[]={v0,v1,v2,v3…} 边数组为一个对称矩阵,该矩阵关于对角线对称,对角线的元素均为0,因为对角线的元素如 **arc[0][0],arc[1][1]**都是顶点到自身的边,而因为是无向图,所以关于对角线对称。

对于有向图,主对角线的元素依旧为零,但是因为为有向图,所以不一定对称。而有向图的入度和出度入度为v1列各数之和,出度为v1列各数之和。
如果对于带有权值的有向图,设图G是网图,有n个顶点,则邻接矩阵是一个n×n的方阵,定义为

邻接矩阵代码如下

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define INFINITY 65535
typedef struct Graph
{char vexs[MAXSIZE];int arc[MAXSIZE][MAXSIZE];int numVertexes, numEdges;
}MGraph;
//建立无向网图的邻接矩阵
void CreatMGraph(MGraph* G)
{int m, n, w;printf("请输入你的顶点数和边数\n");scanf("%d %d", &G->numVertexes, &G->numEdges);for (int i = 0; i < G->numVertexes; i++)scanf(&G->vexs[i]);for (int i = 0; i < G->numVertexes; i++)for (int j = 0; j < G->numVertexes; j++)G->arc[i][j] = INFINITY;for (int i = 0; i < G->numEdges; i++){printf("请输入边(vi,vj)上的下标,下标和权\n");scanf("%d %d %d", &n, &m, &w);G->arc[n][m] = w;G->arc[m][n] = w;}
}
void printMGraph(MGraph* G)
{for (int i = 0; i < G->numVertexes; i++){for (int j = 0; j < G->numVertexes; j++)printf("%10d", G->arc[i][j]);putchar('\n');}
}
int main()
{MGraph* G = (MGraph*)malloc(sizeof(MGraph));CreatMGraph(G);printMGraph(G);return 0;
}

而对于邻接矩阵来说,如果存在定点较多,边数较少的稀疏图,我们发现,对于存储空间的浪费很大,所以我们依旧用一个数组存储顶点信息,但是每个顶点的边关系我们用单链表来存储。

所以抽象数据类型为

在这里插入代码片

图的邻接矩阵和邻接表相关推荐

  1. 实现图的邻接矩阵和邻接表存储

    /** *    实验题目: *        实现图的邻接矩阵和邻接表存储 *    实验目的: *        领会图的两种主要存储结构和图基本运算算法设计 *    实验内容: *       ...

  2. 实现图的邻接矩阵和邻接表的存储

    十五,实现图的邻接矩阵和邻接表的存储 #include<stdio.h> #include<stdlib.h> #define max 100 #define INF 3276 ...

  3. 有向无环图(邻接矩阵和邻接表)

    一.图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合. 注: 在线性表中,元素个数可以为零, ...

  4. c语言邻接表的构建_c语言数据结构--图的邻接矩阵和邻接表操作的基本操作

    #include #include #include #define MAX 100 typedef char DataType; typedef int VectorRelationType; ty ...

  5. 【创建图的邻接矩阵和邻接表】

    目录 1.创建图的邻接矩阵 1.1源码 1.2运行效果 2. 创建图的邻接表 2.1源码

  6. 有向图的邻接矩阵和邻接表画法

    本例子展示有向图画邻接表和邻接矩阵,反过来也是如此 大三时自学了了数据结构中的图,发现图中有邻接矩阵和邻接表,作为笔记记录下来 如下图所示,给了一个有向图,求邻接矩阵 怎么做呢? 第一步:和无向图类似 ...

  7. 图的两种存储方式---邻接矩阵和邻接表

    图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合. 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻 ...

  8. 图的两种存储形式(邻接矩阵、邻接表)

    图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...

  9. 图的表达与遍历--邻接矩阵和邻接表

    今天开始准备学习一个新的数据结构---图,貌似听着挺复杂的,当然实际也不容易啦,所以先从理论上对图有个大概的认识,其实之前咱们学的二叉树就是一种特殊的图,怎么个特殊法呢?因为它没有环,但是图是可以,它 ...

最新文章

  1. 动态规划与卫星任务规划
  2. Kali Linux安装字典StarDict
  3. http,session,cookie
  4. 2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!
  5. 前端开发---ppt展示页面评论区展示
  6. linq 清除一条数据中的某个字段值_利用Postman中Tests断言校验返回结果
  7. C# 的基本数据类型
  8. apache如何加载系统环境变量_游学电子:windows10系统如何用cmd指令设置环境变量...
  9. 毫米波雷达及其应用精炼介绍
  10. 如何将影像地图转换为国家2000坐标系
  11. 【Lua】ToLua逻辑热更新
  12. cropper.js 裁剪图片并上传(文档翻译+demo)(转)
  13. 三国刘备十大名言:三分天下要靠“混
  14. excel导入非法字符处理,form表单等提交参数前后去除空白处理
  15. 微信公众号拉取扫码功能
  16. Linux 将文件移动到指定文件夹中
  17. 目标人脸检测与识别(计算机视觉)
  18. Carbon插件 基本运用
  19. 辽宁师范大学本科毕业论文答辩PPT模板
  20. 年底了,骗子们也要冲业绩了

热门文章

  1. Canvas绘制一个时钟
  2. 安卓开发笔记(十一)—— 方向传感器,实现摇一摇动画音效,GPS定位
  3. 新视野大学英语(第三版)视听说4Unit7必修答案
  4. PlotJuggler的安装遇到的问题记录
  5. 生信笔记:E值究竟是什么?!!!
  6. elementUI表格动态渲染错乱
  7. Android 虚拟键盘相关功能大全
  8. Blogbus适用的日志发布工具【超级写手】
  9. Delphi下的MPS
  10. vue格式化数字(已万、千万、亿结尾)