数据结构:图的存储结构之邻接矩阵「建议收藏」

数据结构:图的存储结构之邻接矩阵「建议收藏」图的邻接矩阵(AdjacencyMatrix)存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:我们来看一个实例,图7-4-2的左图就是一个无向图。我们再来看一个有向图样例,如图7-4-3所示的左图。在图的术语中,我们提到了网的概念,也就

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

图的邻接矩阵(Adjacency Matrix)存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。

设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:

数据结构:图的存储结构之邻接矩阵「建议收藏」

我们来看一个实例,图7-4-2的左图就是一个无向图。

数据结构:图的存储结构之邻接矩阵「建议收藏」

我们再来看一个有向图样例,如图7-4-3所示的左图。

数据结构:图的存储结构之邻接矩阵「建议收藏」

图的术语中,我们提到了网的概念,也就是每条边上都带有权的图叫做网。那些这些权值就需要保存下来。

设图G是网图,有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:

数据结构:图的存储结构之邻接矩阵「建议收藏」

如图7-4-4左图就是一个有向网图。

数据结构:图的存储结构之邻接矩阵「建议收藏」

下面示例无向网图的创建代码:(改编自《大话数据结构》)

 C++ Code 
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

#include<iostream>


using 
namespace std;

#define MAXVEX 
100
/* 最大顶点数,应由用户定义 */


#define INFINITY  
65535 
/* 表示权值的无穷*/

typedef 
int EdgeType;
/* 边上的权值类型应由用户定义 */


typedef 
char VertexType;
/* 顶点类型应由用户定义  */

typedef 
struct

{

    VertexType vexs[MAXVEX];
/* 顶点表 */

    EdgeType arc[MAXVEX][MAXVEX];
/* 邻接矩阵,可看作边表 */

    
int numNodes, numEdges;
/* 图中当前的顶点数和边数  */

} MGraph;


/* 建立无向网图的邻接矩阵表示 */


void CreateMGraph(MGraph *Gp)

{

    
int i, j, k, w;

    cout << 
“请输入顶点数和边数(空格分隔):” << endl;

    cin >> Gp->numNodes >> Gp->numEdges;

    cout << 
“请输入顶点信息(空格分隔):” << endl;

    
for (i = 
0; i < Gp->numNodes; i++)

        cin >> Gp->vexs[i];

    
for (i = 
0; i < Gp->numNodes; i++)

    {

        
for (j = 
0; j < Gp->numNodes; j++)

        {

            
if (i == j)

                Gp->arc[i][j] = 
0;
/* 顶点没有到自己的边*/

            
else

                Gp->arc[i][j] = INFINITY;
/* 邻接矩阵初始化 */

        }

    }

    
for (k = 
0; k < Gp->numEdges; k++)

    {

        cout << 
“请输入边(vi, vj)的上标i,下标j和权值w(空格分隔):” << endl;

        cin >> i >> j >> w;

        Gp->arc[i][j] = w;

        Gp->arc[j][i] = Gp->arc[i][j];
/* 因为是无向图,矩阵对称 */

    }

}

int main(
void)

{

    MGraph MG;

    CreateMGraph(&MG);

    
return 
0;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210017.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 神经网络的反向传播算法推导

    神经网络的反向传播算法推导有了上一篇神经网络的反向传播算法推导—前期知识准备做铺垫,下一步来看看反向传播算法具体的推导过程。一、定义机器学习中常说的两个函数:损失函数(lossfunction):是定义在单个样本上的,算的是一个样本的值和预测值的误差,记为C(Θ);代价函数(costfunction):是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均,记为J(Θ);假设函数:二、神经网络结构图以三层神经网络为例:…

    2022年5月27日
    28
  • veryCD 不能下载了,我们该怎么办?

    veryCD 不能下载了,我们该怎么办?程序员一般都是看教学视频,自己学习,想要大牛手把手教你,估计是不可能的,原来大家都喜欢veryCD这个免费分享平台,可是近期它关掉了,没办法,所有免费的软件资源都下载不了,笔者最近也想下载国嵌的视频,觉得讲的不错,可惜,哎。不过,这些也难不倒学计算机的同学们,veryCD关闭了ed2k的服务,不代表我们迅雷不可以下载ed2k的东西,于是我们要利用百度的力量:我们下载国嵌的usb描述符一类

    2022年8月10日
    8
  • 命令行连接mongodb_yum安装mongodb

    命令行连接mongodb_yum安装mongodb情况:1.使用xmanage能远程链接centos

    2022年8月21日
    6
  • 中国电信天翼光猫改桥接模式密码_电信光猫路由模式

    中国电信天翼光猫改桥接模式密码_电信光猫路由模式使用默认超级管理员账号密码进去telecomadminnE7jA%5m然后在网络设置里改再把路由器使用宽带拨号上网就OK了

    2022年10月8日
    3
  • 使用SSH隧道和Squid创建专用加密代理以进行真正的隐私浏览「建议收藏」

    使用SSH隧道和Squid创建专用加密代理以进行真正的隐私浏览「建议收藏」在远程Linux机器上运行代理服务器,并通过SSH隧道将所有流量传输到它。第1步:安装Squid因为我使用CentOS,所以我只是做了一个 yuminstallsquid第2步:配置Squid好吧,默认的squid配置(/etc/squid/squid.conf)非常好,虽然我需要添加一个ACL子句,所以我实际上可以使用代理。远程的局域网是192.168.1.0/24,所以把这…

    2022年9月9日
    2
  • wsus无法同步计算机,Windows Update无法与WSUS同步,8024401c「建议收藏」

    wsus无法同步计算机,Windows Update无法与WSUS同步,8024401c「建议收藏」Hello,WSUS环境是windowsserver2016,客户端有server16和win101809,windows10可以正常与WSUS同步,其中一台windowsserver2016始终无法与wsus同步,查看该服务器的windowsupdatelog,得到以下信息===================================2019/09/1811:32:13.6…

    2022年6月14日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号