赞
踩
图是一种复杂的数据结构
图包括顶点,边。图的分类有无向图,有向图,带权图。
按照存储有邻接矩阵,邻接表。
图有顶点和边组成。
图有顶点,边。
对于无向图来说,还有个概念,叫做度。就是边的条数。有顶点,有边,就构成了一个图。
对于有向图来说,度有方向,分为入度和出度。顶点,边,入度,出度,构成了一个有向图。
对于带权图来说,有个概念,每条边有个权重。
怎么来存储图这种数据结构呢?这就有邻接矩阵和邻接表。
邻接矩阵是一种使用二维数组来表示图的方法,其中的元素表示两个顶点之间是否有边。在加权图中,矩阵中的元素可以表示边的权重。
在这种表示方法中,每个顶点都关联一个列表,这个列表存储了所有与该顶点直接相连的其他顶点。在加权图中,这个列表中的元素可以是顶点对,或者包含顶点和权重的元组。
public class Graph { // 无向图
private int v; // 顶点的个数
private LinkedList<Integer> adj[]; // 邻接表
public Graph(int v) {
this.v = v;
adj = new LinkedList[v];
for (int i=0; i<v; ++i) {
adj[i] = new LinkedList<>();
}
}
public void addEdge(int s, int t) { // 无向图一条边存两次
adj[s].add(t);
adj[t].add(s);
}
}
图这个数据结构
本篇主要记录了跟图有关的概念,比如,顶点,边。无向图,有向图,带权图;邻接矩阵,邻接表。基本上就这么多吧。跟图相关的概念。接下来可以聊聊跟图相关的算法了。像深度优先,广度优先;当然还有些其他的应用,最短路径,生成最小树,朋友圈好友等等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。