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

第七章 图论

第七章 图论

一、数据结构定义

  1. 图的邻接矩阵存储法
    #define MaxVertexNum 100 // 节点数目的最大值// 无边权,只用0或1表示边是否存在
    bool graph[MaxVertexNum][MaxVertexNum];// 有边权
    int graph[MaxVertexNum][MaxVertexNum];
    
  2. 图的邻接表存储法
    把所有节点存储为节点数组,每个节点里有自己的数据和一个边指针,这个边指针相当于一个链表的头指针,这个链表里存放所有与这个节点相连的边,边里存放该边指向的节点编号和下一条边指针
    请添加图片描述
    #define MaxVertexNum 100 // 节点数目的最大值
    typedef struct EdgeNode{ // 边表节点int adjvex; // 该边所指向的节点编号struct EdgeNode *next; // 指向下一条边的指针// Infotype info; // 边权值(如果有)
    }EdgeNode;typedef struct VNode{ //节点表节点VertexType data; // 节点信息EdgeNode *first; // 指向第一条依附该节点的边的指针
    }VNode;typedef struct{int verNum, edgeNum; // 节点数和边数VNode AdjList[MaxVertexNum]; // 节点数组
    } ALGraph; // 邻接表
    
  3. 图的十字链表存储法(有向图)
    请添加图片描述
    typedef struct edgeNode{int headVer, tailVer; struct edgeNode *hLink, *tLink; // 分别指向弧头和弧尾相同的下一条边infoType info;
    } edgeNode;typedef struct VNode{VerType data;edgeNode *firstIn, *firstOut; // 分别指向入边表和出边表中的第一个边节点
    } VNode;typedef struct{int verNum, edgeNum;VNode XList[verNum]; // 顶点表
    } OLGraph;
    
  4. 图的邻接多重表存储法(无向图)
    请添加图片描述
    typedef struct edgeNode{int iVer, jVer; // 边的两个顶点在顶点表(数组)里的下标struct edgeNode *iLink, *jLink; // 和顶点相连的下一条边infoType info; // 带权图可存储边的权值
    } edgeNode;typedef struct VNode{VerType data;edgeNode *firstEdge;
    } VNode;typedef struct{int verNum, edgeNum; // 图的顶点数和边数VNode adjMuList[verNum];
    } AMLGraph; 
    

二、代码/算法

  1. 遍历/搜索
    • DFS实现
    • BFS实现
  2. 最小生成树
    • Prim算法(ACE:不要求记忆)
    • Kruskal算法(ACE:不要求掌握,理解并查集在Kruskal中的作用即可)
  3. 最短路径
    • Dijkstra算法
    • Floyd算法
  4. 拓扑排序算法(ACE:常考选择题)
  5. 关键路径算法 (ACE:常考选择题)
  6. 并查集
http://www.lryc.cn/news/111920.html

相关文章:

  • IEEE SystemVerilog Chapter13 : Tasks and functions (subroutines)
  • day39反转字符串总结
  • 使用Socket实现TCP版的回显服务器
  • 【Nacos篇】Nacos基本操作及配置
  • Dockerfile构建Tomcat镜像
  • k8s的介绍
  • mysql sql语句 需要使用like 场景,解决方案
  • 通过C语言设计的贪吃蛇游戏(控制台终端)
  • c++实现Qt信号和槽机制
  • 【Linux】五、进程
  • 使用 OpenCV 和 Python 卡通化图像-附源码
  • GitLab不同角色对应的权限
  • 手写一个简易的布隆过滤器
  • 阿里云快速部署开发环境 (Apache + Mysql8.0)
  • 侧边栏的打开与收起
  • 贝叶斯学习
  • Java并发系列之六:CountDownLatch
  • 24数据结构-图的基本概念与存储结构
  • 自然语言处理学习笔记(三)————HanLP安装与使用
  • CS 144 Lab Five -- the network interface
  • Mecha
  • Apache RocketMQ之集成RocketMQ_MQTT 安装部署协议
  • Oracle多行数据合并为一行数据,并将列数据转为字段名
  • MySQL5.7 与 MariaDB10.1 审计插件兼容性验证
  • PyTorch Lightning教程五:Debug调试
  • 末流211无科研保研经验分享
  • 日期选择器多选换行
  • NodeJS原型链污染ctfshow_nodejs
  • 18. SpringBoot 如何在 POM 中引入本地 JAR 包
  • vue2-$nextTick有什么作用?