图的知识点总结-数据结构

版权声明:版权归本博主所有,如若转载请注明出处,如有疑问,加WeCaht:13563758128 https://blog.csdn.net/yang13563758128/article/details/85099187

一:图的基本概念和术语

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 -1
 typedef 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 20
 typedef 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-网中弧表示活动,顶点表示事件,从源点到终点的最长路径为关键路径。

七:最短路径

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

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

猜你喜欢

转载自blog.csdn.net/yang13563758128/article/details/85099187