数据结构——图
定义:一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。
著名的图算法(比如广度优先搜索 或者 深度优先搜索)
如何描述:
有两种主要的方法:邻接列表和邻接矩阵。
- 邻接列表
- 邻接矩阵
往这个图中添加顶点的成本非常昂贵,因为新的矩阵结果必须重新按照新的行/列创建,然后将已有的数据复制到新的矩阵中。
所以使用哪一个呢?大多数时候,选择邻接列表是正确的。
代码:
class Edge<T>(val from: Vertex<T>,
val to: Vertex<T>,
val weight: Double? = 0.toDouble()) {
}
邻接列表的实现
class EdgeList<T> (var vertex: Vertex<T> ){
var edges: ArrayList<Edge<T>> = ArrayList()
fun addEdge(edge: Edge<T>){
edges.add(edge)
}
}