一:图的基本概念和术语

1.图之间的关系可以是任意的,任意两个数据元素之间都可能相关。

2.顶点:数据元素。

3.边or弧:从一个顶点到另一个顶点的路径。<V, W>表示弧,(V,W)表示边,V是弧尾,W是弧头,此时为有向图,否则为无向图。

4.对于无向图,边的取值范围是0到1/2*n*(n-1)。有1/2*n*(n-1)条边的无向图为完全图。对于有向图,边的取值范围0到n*(n-1),n*(n-1)称做有向完全图。

5.多条边的是稠密图,少边的是稀疏图。

6.对于无向图,顶点V的度是相连的边数;顶点V的入度是以V为头的弧数,出度是以V为尾的弧数。

7.连通图:对于图中任意顶点都能连通。

8.最小生成树:极小连通子图。

二:图的存储结构

常见的图的存储结构分为:邻接表、邻接多重表、十字链表。

能方便使用的是邻接表,下面是其代码实现:

在邻接表中对图中的每一个顶点建立一个单链表,每个结点的组成尾三部分,adjvex(指向邻接点)-nextarc(指向下一结点)-info(顶点信息),加一个头结点,data(数据域)-firstarc(邻接点)。

邻接表存储:

#include<string.h>#include<ctype.h>#include<malloc.h> /* malloc()等 */#include<limits.h> /* INT_MAX等 */#include<stdio.h> /* EOF(=^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */#include<process.h> /* exit() *//* 函数结果状态代码 */#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */#define MAX_NAME 5 /* 顶点字符串的最大长度 */typedef int InfoType;typedef char VertexType[MAX_NAME]; /* 字符串类型 *//* c7-2.h 图的邻接表存储表示 */#define MAX_VERTEX_NUM 20typedef enum{DG,DN,AG,AN}GraphKind; /* {有向图,有向网,无向图,无向网} */typedef struct ArcNode{int adjvex; /* 该弧所指向的顶点的位置 */struct ArcNode *nextarc; /* 指向下一条弧的指针 */InfoType *info; /* 网的权值指针) */}ArcNode; /* 表结点 */typedef struct{VertexType data; /* 顶点信息 */ArcNode *firstarc; /* 第一个表结点的地址,指向第一条依附该顶点的弧的指针 */}VNode,AdjList[MAX_VERTEX_NUM]; /* 头结点 */typedef struct{AdjList vertices;int vexnum,arcnum; /* 图的当前顶点数和弧数 */int kind; /* 图的种类标志 */}ALGraph;

三:图的遍历

从图的某一顶点出发访问图的其它结点,且只访问一次,叫图的遍历。

1.图的深度优先遍历(DFS)

2.图的广度优先遍历(BFS)

四:图的最小生成树

求最小生成树算法:普里姆算法、克鲁斯卡尔算法。

五:拓扑排序

简单的说,就是由某个集合上的偏序求全序。用AOV-网中顶点来表示活动,多应用于求工程能否进行。

六:关键路径

用到AOE-网中弧表示活动,顶点表示事件,从源点到终点的最长路径为关键路径。

七:最短路径

求单源点到其他顶点的最短路径:迪杰斯特拉算法。

求每一对顶点的最短路径:弗洛伊德算法。

图的知识点总结-数据结构相关推荐

  1. 数据结构——图-基本知识点(第七章)

    目录 1. 图的定义 1.1 各种图定义 1.2 图的顶点与边间关系 1.3 连通图相关术语 1.4 图的定义与术语总结 2. 图的抽象数据类型 3. 图的存储结构 3.1 邻接矩阵 3.2 邻接表 ...

  2. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  3. 数据治理专业认证CDMP学习笔记(思维导数据治理专业认证CDMP学习笔记(思维导图与知识点)- 第11章数据仓库和商务智能篇...

    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人.在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识. 数据治理 ...

  4. 数据治理专业认证CDMP学习笔记(思维导图与知识点)- 第八章数据集成和互操作篇...

    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人.在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识. 数据治理 ...

  5. 四年级下册英语计算机房和教师办公室的图片,PEP英语四年级下册-Unit-1思维导图及知识点梳理.pptx...

    PEP英语四年级下册-Unit-1思维导图及知识点梳理.pptx (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 四年级 下册 U ...

  6. Pandas知识点-Series数据结构介绍

    Pandas知识点-Series数据结构介绍 本文用到的数据来源于网易财经,具体下载方式可以参考上一篇文章:https://blog.csdn.net/weixin_43790276/article/ ...

  7. APP设计干货|切图基本知识点规范

    APP设计元素切图基本知识点规范 切图命名 知识点: 1.和客户端的技术沟通好,用不同的框架来实现的时候,图会有不一样的切法.例如Tabbar是连背景一起切还是单独把icon做成背景透明的,文字是放在 ...

  8. 用24张图介绍九大数据结构

    用24张图介绍九大数据结构 数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一.数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同 ...

  9. Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图、折线图、标注文字、图例、三维坐标)之详细攻略

    Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图.折线图.标注文字.图例.三维坐标)之详细攻略 目录

最新文章

  1. 1万粉的小红书kol报价_小红书母婴博主资源怎么找?小红书母婴种草软文撰写技巧分享!...
  2. Xcode8 及iOS10适配问题汇总
  3. 大型分布式网站架构技术总结
  4. Hive:解决Hive创建文件数过多的问题
  5. CentOS通过日志反查入侵(转)
  6. GitHub上个最有意思的项目合集(技术清单系列)
  7. Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)
  8. Codeweavers的丰田模式
  9. 模电--反馈电路的综合判断
  10. 最新爱网外链网盘V5.0版 全新界面 支持图片违规检测
  11. ECCV 2020|3D-CVF多模态融合(LIDAR+CAMERA)
  12. 小程序公众号关注组件
  13. 7-1 复数类的操作
  14. Java笔试面试-Executors
  15. python:SyntaxError: invalid syntax
  16. PAT 甲级考试终于满分了
  17. 地下水运动方程的解析解(一维潜水)
  18. 北京市道路街道区县shape分享
  19. C++--输出:保留两位小数
  20. 计算机专业普通话考试成绩查询时间,2021普通话考完多久能查分 几天出成绩

热门文章

  1. 做技术知道了哪些事情代表自己成熟了?
  2. Android ANR视角InputDispatcher
  3. samba 服务器搭建
  4. Android RTC 自下往上浅析
  5. java怎么编程方程_[编程入门]自定义函数求一元二次方程-题解(Java代码)
  6. centos 启动一个redis_基于prometheus+grafana体系监控redis缓存服务
  7. LeetCode 1598. 文件夹操作日志搜集器
  8. LeetCode 第 29 场双周赛(890/2259,前39.4%)
  9. LeetCode 1222. 可以攻击国王的皇后(set)
  10. LeetCode 450. 删除二叉搜索树中的节点