每周学习日志(四)

学习图的邻接表、图的遍历、最小生成树

邻接表

有无向图的邻接表、有向图的邻接表和有向网的邻接表。

#define max_vertex_num 10
typedef enum{DG,DN,UDG,UDN}
Graphkind;
typedef struct ArcNode{
      int adjvex;
      struct ArcNode *nextarc;
      otherinfo info;
}ArcNode;
typedef struct vertexNode{
      vertexData data;
      ArcNode *firstarc;
}vertexNode
typedef struct{
      vertexNode vertex[max_vertex_num];
      int vexnum,arcnum;
      Graphkind kind;
}Adjlist;

邻接表优点:不必存储不存在的边(弧)。

邻接表缺点:·结构较为复杂。·如建立逆邻接表,方便计算入度,但实际上,一条边需要分别在邻接表与逆邻接表中存储。


图的遍历

方法为:深度优先搜索DFS、广度优先搜索BFS.

深度优先搜索【先序】【递归】 非递归辅助数据结构为【栈】。

广度优先搜索【层序】【队列】


最小生成树

连通分支概念:无向图的极大连通子图。

有极小连通子图的概念。

一个极小连通子图:含有图中的全部顶点,但只有足以构成一棵树的n-1条边。(不能反推)

普里姆算法、克鲁斯卡尔算法。

原文地址:https://www.cnblogs.com/wananouo/p/12918067.html