当前位置: 首页 > article >正文

【图】图学习

0 回顾数据结构逻辑

1 图的定义和基本术语

必须有顶点,可以没有边。

Cn2和2*Cn2(数学上的,n个顶点取2个顶点)

概念有些多。。。。。。

2 图的定义

3 图的存储结构

无向图的邻接矩阵

有向图的邻接矩阵

网(有权图)的邻接矩阵

邻接矩阵

邻接矩阵的存储表示:用两个数组分别存储顶点表邻接矩阵

#define MaxInt 32767             // 表示极大值,即∞
#define MVNum 100                // 最大顶点数
typedef char VerTexType;         // 设顶点的数据类型为字符型
typedef int ArcType;             // 假设边的权值类型为整型


typedef struct {
    VerTexIype vexs[MVNum];          // 顶点表
    ArcType arcs[MVNum][MVNum];      // 邻接矩阵
    int vexnum, arcnum;              // 图的当前点数和边数
} AMGraph; 
// Adjacency Matrix Graph

2、采用邻接矩阵表示法创建无向网


【算法思想】

(1)输入总顶点数和总边数;

(2)依次输入点的信息存入顶点表中;

(3)初始化邻接矩阵,使每个权值初始化为极大值;

(4)构造邻接矩阵。

创建无向网

void CreatUDN(AMGraph &G)
{
    // 第一步:输入无向图的顶点数目
    cout << "input num" << endl;
    cin >> G.arcnum >> G.arcnum; // 输入总顶点数和总边数
    // 第二步:输入结点的名称,保存在一维数组中
    cout << "input vexs" << endl;
    for (int i = 0; i < G.vexnum; ++i)
    {
        cin >> G.vexs[i];
    }
    // 第三步:将邻接矩阵的元素值置为无穷大
    for (int i = 0; i < G.arcnum; ++i)
    {
        for (int j = 0; j < G.arcnum; ++j)
        {
            G.arcs[i][j] = INT32_MAX;
        }
    }
    // 第四步:输入顶点相互关系以及权重
    for (int k = 0; k < G.arcnum; ++k)
    {
        int i, j, weight;
        char a, b;
        cin >> a >> b >> weight;
        // 由输入的顶点a和b查找到对应的下标i,j
        i = LocateVex(G, a);
        j = LocateVex(G, b);
        G.arcs[i][j] = G.arcs[j][i] = weight;
    }
}

邻接矩阵的LocateVex函数

int LocateVex(AMGraph &G, const char &e)
{
    for (int i = 0; i < G.vexnum; ++i)
    {
        if(G.vexs[i] == e)
            return i;
    }
    return -1;
}


http://www.kler.cn/a/388076.html

相关文章:

  • 10款PDF合并工具的使用体验与推荐!!!
  • 编译ffmpeg动态库时设置RPATH为$ORIGIN
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-最大的数
  • 免费HTML模板和CSS样式网站汇总
  • AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)
  • Qt初识简单使用Qt
  • 20241106软考架构-------软考案例12答案
  • SQL,力扣题目262,行程和用户
  • 9_api_intro_imagerecognition_ocr2word
  • Vue 的 keep-alive
  • CSRF 跨站请求伪造的实现原理和预防措施
  • Windows 使用批处理脚本快速释放被占用的端口
  • 深度学习:预训练(Pre-training详解
  • 【如何在 Linux 和 Android 系统中杀死进程】
  • 【模型学习之路】手写+分析GAT
  • 前端 Flex 布局语法详解
  • Python接口自动化测试自学指南(项目实战)
  • 海外云手机在出海业务中的优势有哪些?
  • Elasticsearch实战使用
  • u盘怎么重装电脑系统_u盘重装电脑系统步骤和详细教程【新手宝典】
  • Hive中查看字段中是否包含某些字符串的函数
  • Git 入门篇(三)
  • 发布 VectorTraits v3.0(支持 X86架构的Avx512系列指令集,支持 Wasm架构及PackedSimd指令集等)
  • 从0开始深度学习(24)——填充和步幅
  • 通过 SSH 连接远程 Ubuntu 服务器
  • 24下半年教资面试资源(幼儿+小学+初中+高中+各科)逐字稿