邻接矩阵定义、创建邻接矩阵

/**
 * 邻接矩阵定义、创建邻接矩阵
 * 
 * ①算法思想
 *
 * ②算法设计
 */

#include <stdio.h>
#include <iostream>
#include <cstdio>
#include <malloc.h>
#include <cstdlib>
#define MaxSize 20
#define INF 999999

//1、邻接矩阵
//无向图、有向图
struct MGraph{
    char Vex[MaxSize];//保存每个节点的权值,很多时候是用string
    int Edge[MaxSize][MaxSize];//保存边上权值
    int VexNum,ArcNum;//储存顶点个数和边的个数
};

//带权图(网)
struct MGraphW{
    char Vex[MaxSize];//保存每个节点的权值,很多时候是用string
    int Weight[MaxSize][MaxSize];//保存边上权值
    int VexNum,ArcNum;//储存顶点个数和边的个数
};

//创建邻接矩阵
//①有向图
MGraph CreatMGraphX(){
    MGraph G;
    scanf("%d %d",&G.VexNum,&G.ArcNum);
    for (int i = 0; i < G.VexNum; ++i) {
        for (int j = 0; j < G.VexNum; ++j) {
            G.Edge[i][j] = 0;//初始化
        }
    }
    int v1,v2;//输入有边连接的两个顶点
    for (int i = 0; i < G.ArcNum; ++i) {
        scanf("%d%d",&v1,&v2);
        G.Edge[v1][v2] = 1;
    }
    return G;
}
//②有向带权图(网)
MGraphW CreatMGraphWX(){
    MGraphW G;
    scanf("%d%d",&G.VexNum,&G.ArcNum);
    for (int i = 0; i < G.VexNum; ++i) {
        for (int j = 0; j < G.VexNum; ++j) {
            G.Weight[i][j] = INF;//初始化
        }
    }
    int v1,v2,w;
    for (int i = 0; i < G.ArcNum; ++i) {
        scanf("%d%d%d",&v1,&v2,&w);
        G.Weight[v1][v2] = w;
    }
    return G;
}
//③无向图
MGraph CreatMGraph(){
    MGraph G;
    scanf("%d%d",&G.VexNum,&G.ArcNum);
    for (int i = 0; i <G.VexNum; ++i) {
        for (int j = 0; j < G.VexNum; ++j) {
            G.Edge[i][j] = 0;
        }
    }
    int v1,v2;
    for (int i = 0; i < G.ArcNum; ++i) {
        scanf("%d%d",&v1,&v2);
        G.Edge[v1][v2] = G.Edge[v1][v2] = 1;
    }
    return G;
}
//④无向带权图(网)
MGraph CreatMGraphW(){
    MGraphW G;
    scanf("%d%d",&G.VexNum,&G.ArcNum);
    for (int i = 0; i < G.VexNum; ++i) {
        for (int j = 0; j < G.VexNum; ++j) {
            G.Weight[i][j] = INF;
        }
    }
    int v1,v2,w;
    for (int i = 0; i <G.VexNum; ++i) {
        scanf("%d%d%d",&v1,&v2,&w);
        G.Weight[v1][v2] = G.Weight[v1][v2] = w;
    }
    return G;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关联矩阵邻接矩阵是用于表示图的结构的两种常见矩阵表示方法。 关联矩阵是一个n×m矩阵,其中n是顶点的数量,m是边的数量。关联矩阵的元素gij表示顶点vi与边ej相关联。如果顶点vi是边ej的起点,则gij为-1;如果顶点vi是边ej的终点,则gij为1;如果顶点vi与边ej没有直接关联,则gij为0。关联矩阵可以用于描述图中顶点与边之间的关系。 邻接矩阵是一个n阶方阵,其中n是图中顶点的数量。邻接矩阵的元素aij表示连接顶点vi与vj的边的存在与否。如果顶点vi与vj之间有边相连,则aij为1;如果没有边相连,则aij为0。邻接矩阵可以用于描述图中顶点之间的直接连接关系。 可以通过控制参数,定义一个转换函数来实现关联矩阵邻接矩阵之间的转换功能。对于无向图,可以直接将关联矩阵转换为邻接矩阵,或者将邻接矩阵转换为关联矩阵。对于有向图,需要考虑连接边的方向问题,同样可以定义一个转换参数,实现关联矩阵邻接矩阵之间的转换功能。 通过Matlab等计算机语言可以编写相应的脚本来实现无向图和有向图中关联矩阵邻接矩阵的转换,进一步理解和掌握这两种矩阵定义和含义,并学习如何使用计算机语言进行矩阵运算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [(案例)利用Matlab实践关联矩阵邻接矩阵的转换](https://blog.csdn.net/weixin_39609541/article/details/115809326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [图论(4)邻接矩阵,关联矩阵](https://blog.csdn.net/chk_plusplus/article/details/105241486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值