邻接矩阵--无向图

带权无向图的邻接矩阵表示法(C语言实现) 带权无向图的邻接矩阵表示法(C语言实现) 文章目录带权无向图的邻接矩阵表示法(C语言实现)一、邻接矩阵表示法二、本次程序实现的功能三、带权无向图的结构体定义四、创建无向图及邻接矩阵五、输出邻接矩阵六、输出顶点集合七、判断两顶点是否邻接八、全部代码九、测试 一、邻接矩阵表示法 ​ 定义:所谓邻接矩阵存储,是指用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息(即各顶点之间的邻接关系),存储顶点之间邻接关系的二维数组称为邻接矩阵。 ​ 对于带权图而言,若顶点Vi 和 Vj 之间有边相连,则邻接 阅读详情

图的邻接矩阵存储方式是用俩个数组来表示的图。一个一维数组储存图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边和弧的信息。
有了矩阵的好处:
1、我们要判定任意二个顶点是否有边就容易了;
2、我们知道某个顶点的度,其实就是知道顶点vi在邻接矩阵中第i行(i列)的元素之和。
3.求顶点vi的所有邻接点就是将矩阵中第i行元素扫描一遍,为1就是邻接点。

输入样例:
4 5
0 1 2 3
1 0 1
2 0 1
3 0 1
2 1 1
3 2 1

输出:
0 1 1 1
1 0 1 0
1 1 0 1
1 0 1 0

#include <iostream>
#include <iomanip>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* 最大顶点数,应由用户定义 */
#define INFINITY 0
using namespace std;

typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef char VertexType; /* 顶点类型应由用户定义  */
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef struct
{
    VertexType vexs[MAXVEX]; /* 顶点表 */
    EdgeType arc[MAXVEX][MAXVEX];/* 邻接矩阵,可看作边表 */
    int numNodes, numEdges; /* 图中当前的顶点数和边数  */
}MGraph;

/* 建立无向网图的邻接矩阵表示 */
void CreateMGraph(MGraph *G)
{
    int i,j,k,w;
    cout  << "输入顶点数和边数:" << endl;
    cin >> G->numNodes >> G->numEdges; /* 输入顶点数和边数 */

    cout << "读入顶点信息,建立顶点表" <<endl ;
    for(i = 0;i <G->numNodes;i++) /* 读入顶点信息,建立顶点表 */
        cin >> G->vexs[i];

    for(i = 0;i <G->numNodes;i++)
        for(j = 0;j <G->numNodes;j++)
            G->arc[i][j] = INFINITY;    /* 邻接矩阵初始化 */

    cout << "输入边(vi,vj)上的下标i,下标j和权w:" << endl;
    for(k = 0; k < G->numEdges; k++) /* 读入numEdges条边,建立邻接矩阵 */
    {
        cin >> i >> j >> w; /* 输入边(vi,vj)上的权w */
        G->arc[i][j] = w;
        G->arc[j][i] = G->arc[i][j]; /* 因为是无向图,矩阵对称 */
    }
}
void PrintfMGraph(MGraph *G)
{
    for(int i = 0; i < G->numNodes ;i++)
    {
        for(int j = 0; j <G->numNodes; j++)
            cout << setfill(' ')<< setw(5) << G->arc[i][j] <<" ";   /* 邻接矩阵初始化 */
            cout <<endl;
    }

}
有向图和无向图用邻接矩阵储存 一般存储图的方式有两种:一是用邻接矩阵表示,二是用邻接链表。 所谓用邻接矩阵,是用一个二维数组存储,边使用矩阵来构建模型,这使得每一个顶点和其它顶点之间都有边的有无 的 表示的机会。若有边,则他们交点 为1 ,否则为0。当然,如果是一副边有权值的图,交点存储的是他们边的权值。 1、首先收一下无向图的存储: 无向图的边的矩阵一定是一个对称矩阵,因为无向图只关心边是否存在,而不关心方向, 阅读详情

相关推荐

C++构造无向图,邻接矩阵,深度优先遍历,广度优先遍历

define MVNum 100 //最大顶点数//定义无向图邻接矩阵{//顶点表//邻接矩阵//图的当前定点数和边数};

qq_44757691的博客 6593

第五章 图的基本概念 5.3 图的矩阵表示

5.3 图的矩阵表示 本节讨论图的关联矩阵,邻接矩阵,可达矩阵。 无向图的关联矩阵 这里的关联是指点与边之间的关联。如图: 这个无向图的关联矩阵为: 矩阵的每一行代表一个点与各边之间的关系。所以第iii行元素之和为viv_ivi​的度数。 每一列代表一条边与各点之间的关系。所以每一列恰好有两个1(一条边的两个端点)或者一个2(环)。 矩阵中各元素之和等于2m2m2m(边条数的2倍)。 有向...

Deam_swan_goose的博客 7624

邻接矩阵实现无权无向图、带权无向图 java

无权无向图、带权无向图的实现 java 邻接矩阵实现无权无向图、带权无向图 java 1.图的接口 import java.util.List; public interface Graph { public int getSize(); //返回图中的顶点数 public List getVertices(); //返回图形中的顶点 public V ge...

weixin_43409850的博客 4785

数据结构之图(五)——最短路径

对于网图来说,最短路径,是指俩顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。而非网图完全可以理解为所有的边的权值都为1的网。从某个源点到其余各顶点的最短路径问题——迪杰斯特拉(Dijkstra)算法这是一个按路径长度递增的次序产生最短路径的算法。它并不是一下子就求出源点到终点的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最

BackkomCoder的博客 644

无向图的邻接矩阵表示

无向图的邻接矩阵表示

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2649

图的深度优先遍历DFS (邻接矩阵实现) c语言

图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。每个顶点有且只能被访问一次。 深度优先遍历也叫深度优先搜索(Depth First Search)。 它的遍历规则:先选择一个初始顶点,再规定一个方向,例如往右边一直遍历。于是就往右边一直走,把访问过的顶点做好标记,沿着右边访问完后,回溯到之前访问过的顶点,找找还有没有顶点没有访问的,当所有顶点被访问,完成遍历。 DFS是...

大芝士球的博客 2万+

零代码进行单细胞数据全流程分析教程

我开发的本地电脑无限使用无限分析作图的生信零代码一键分析电脑软件神器OmicsTools 软件在github上的zihaoxingstudy1/OmicsTools仓库 中,大家可以下载安装OmicsTools进行各种生信分析和可视化作图。

qq_40073899的博客 3616

无向图的邻接矩阵(数组表示法)

图的逻辑结构:多对多 很难用多重链表表示 1.数组(邻接矩阵)表示法 一维数组Vexs[n],叫顶点表,有n个,所以定义从0到n-1的数组,将n个顶点存储。 顶点之间哪两个有边,怎么表示呢?用二维数组arcs(边的 意思)表示,把数组中任意一个元素定义成:如果存在一条弧,从i到j,用<>表示有序,或存在一条边,从i到j,用()表示无序,那矩阵下标为ij的元素arcs[i][j]就为1,若不存在,就记为0,这就是邻接矩阵的定义 来看无向图的例子:这个邻接矩阵...

weixin_52634719的博客 1万+

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

C#与Lua交互原理

以前每一次研究一些新知识并且有所收获的时候,都想写一篇博客来分享这种自己的收获。 一直没有写主要是因为自己水平太菜了,怕写出来贻笑大方,最近想通了,想写就写下来,就算对别人毫无用处,还可以自己没事翻翻,省得自己都忘了。当然如果能对你有一丝丝的帮助,那真是再好不过了 。本文将针对C#与Lua的调用原理阐述一些个人的心得 。 Lua开发环境搭建 有关于VS &amp...

Hui Ye的博客 1万+

无向图的邻接矩阵表示求各顶点的度-----数据结构与算法笔记

参考书:《数据结构(C语言)》–严蔚敏等编著,清华大学出版社。

王先生的蒋小姐的博客 1万+

Windows——Nessus安装(无限制)

Nessus手把手图文安装,解除ip限制~

网安小白的博客 9448

无向图邻接矩阵的创建

无向图的邻接矩阵:存储方式是利用两个数组来表示图。一个一维数组(Vexs)存储图中顶点信息,另一个二维数组(Edge)存储图中边的信息。 首先创建邻接矩阵的结构体,变量有存放顶点信息的一维数组(Vexs),存放边的信息的二维数组(Edge),当前的顶点数和边数这四个变量,然后创建一个子函数CreateMGraph用来创建无向图的邻接矩阵,在创建一个子函数ShowpGraph用来输出创建的无向邻接...

Change_Improve的博客 2万+

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)>

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)> 插件导入项目 导入后打开OPS/Obfuscator/Obfuscator Pro Settings 打开后可以看到界面如下 可以在上面界面中选择你需要混淆的类,方法,字段,属性,事件,参数。需要混淆的程序集的选择。如果有些程序集混淆后会有问题也可以添加到白名单里不被混淆 根据自己需求取选择 这个界面是是否添加添加随机代码的 如果使用了上面的插件可以使用 插件下载网址:https://download.cs

Xing_Cheng_Yun的博客 5099

RK3568平台(网络篇)添加网络交换芯片RTL8306M

该交换芯片支持I2C、SPI、mdio通信,但是看ast1520的uboot代码采用的是mdio去通信phy芯片的,所以暂时也先采用mdio的方式,需要配置相应的引脚才可以配置成mdio通信模式,具体的配置硬件工程师解决。RTL8306M芯片上可能没有提供MDC/MDIO接口,可以通过GPIO(General Purpose Input/Output)来模拟,GPIO可实现串行输入输出,且一般CPU上会提供很多GPIO接口供用户自定义使用。

weixin_49303682的博客 3934

无向图的邻接矩阵

无向图的邻接矩阵的定义、表示法、度

m0_63724626的博客 1万+

RK3588, 绘制中文OSD,实现左右对齐

基于RK3588,实现中文OSD, 上下左右对齐。

J。 661

邻接矩阵无向图的介绍

邻接矩阵无向图是指通过邻接矩阵表示的无向图。 上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里列举边时,是按照字母先后顺序列举的。 上图右边的矩阵是G1在内存中的邻接矩阵示意图。A[i][j]=1表示第i个...

羞羞滴小朋友 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用邻接矩阵存储无向图

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34290352的博客 4215

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

无向图邻接矩阵的存储C语言,使用邻接矩阵存储无向图

问题描述使用邻接矩阵存储下图所示无向图**** 解题思路创建一个邻接矩阵程序实现#include #include #define MAXVEX 10/* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int Status;/* 顶点类型应由用户定义 */typedef char VertexType;/* 边上的权值类型应由用户定义 */typedef int...

weixin_28711397的博客 3837

邻接矩阵无向图

邻接矩阵无向图的介绍 邻接矩阵无向图是指通过邻接矩阵表示的无向图。 上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里列举边时,是按照字母先后顺序列举的。 上图右边的矩阵是G1在内存中的邻接矩阵示意图。A[i][...

Geek 1万+

matlab用邻接矩阵画加权无向图

这里有一点一定要注意,因为为无向图,因此邻接矩阵一定要是关于对角线对称的,即Aij=Aji(且对角线上元素Aii=0),两点之间相互无向连接,有向图可以不为对称矩阵(有方向) 方法及函数: 1.推荐matlab一个图论很好用的包Graph and Network Algorithms,官网有函数介绍https://www.mathworks.com/help/matlab/graph-and-...

qq_32793161的博客 1万+

邻接矩阵实现有向图、无向图、有向网、无向网——简单使用

邻接矩阵(AdjacencyMatrix)的存储结构就是通过一维数组存储图中顶点的信息,用矩阵表示图中各个顶点的的临界关系,而矩阵通过一个二维数组表示。 理论知识可以参考:https://blog.youkuaiyun.com/weixin_42265429/article/details/90202076 关于使用邻接矩阵去实现图和网,代码如下: #include<stdio.h> #include<string.h> #include<malloc.h> #include&l.

wh1236666的博客 5696
上一篇: C++中用cout函数怎样实现格式输出
下一篇: 一篇文章了解,邻接矩阵--有向图
EncodedStar
博客等级 码龄10年 2614粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值