邻接列表图实现-可重用类
本文关键字:实现 列表 | 更新日期: 2023-09-27 18:00:06
我将Graph(在Graph类中)存储为:CCD_ 1。
我应该如何存储边缘的重量、颜色等属性?(使其可重用,例如用于WeightedGraphs
、ColoredGraphs
等)为了创建通用Graph类,我考虑在Graph类中添加IGraph
接口(它将包含常见的Graph操作,如Traverse
、InsertEdge
等)作为属性。
但是,我不知道如何处理边缘属性。如果我将IGraph
接口实现为ColoredGraph
,我希望Vertex具有颜色属性,对于将IGraph
实现为Dictionary< Vertex<T>, List<Vertex<T>> _edges
0,我希望具有权重属性等等。我还想听听如何将Graph实现为邻接列表。
ps:这不是学校作业
Edge ={2 Vertices = {Adjacent Vertices per a vertex}, weighted value, color value, etc}
THen
public Vertex
{
//get adjacent list of vertices
}
public class Edge
{
//define necesary values
//define pair of vertices to make an edge
}
您可以通过使用Tuple<>
作为图的顶点来实现这一点。Tuple<>
将允许您存储边缘的各种属性。
图形的签名可以定义为:
Dictionary< Vertex<T>, List<Tuple<T, T>> _edges.
Tuple
中的第一项指示边缘的目的地节点。Tuple
中的其余项将保持该边的属性。