阅读量:0
在Java中,使用邻接表表示图的数据结构时,可以通过扩展类或者接口来实现。这里我们将使用一个简单的例子来说明如何扩展邻接表。
首先,我们创建一个基本的邻接表类:
public class Graph { private int vertexCount; // 顶点数量 private List<Integer>[] adjacencyList; // 邻接表 public Graph(int vertexCount) { this.vertexCount = vertexCount; adjacencyList = new ArrayList[vertexCount]; for (int i = 0; i< vertexCount; i++) { adjacencyList[i] = new ArrayList<>(); } } public void addEdge(int source, int destination) { adjacencyList[source].add(destination); adjacencyList[destination].add(source); } public List<Integer> getAdjacentVertices(int vertex) { return adjacencyList[vertex]; } }
现在,我们想要扩展这个类,添加一些额外的功能。例如,我们想要计算图中两个顶点之间的最短路径。为此,我们可以创建一个新的类,继承自Graph
类,并添加所需的方法:
public class ExtendedGraph extends Graph { public ExtendedGraph(int vertexCount) { super(vertexCount); } public int shortestPath(int source, int destination) { // 使用Dijkstra算法或其他算法计算最短路径 } }
这样,我们就可以使用ExtendedGraph
类来创建一个具有额外功能的邻接表。当然,你也可以根据需要添加更多的方法和功能。
另一种扩展方式是使用接口。你可以创建一个接口,定义一些额外的功能,然后让邻接表类实现这个接口:
public interface GraphExtension { int shortestPath(int source, int destination); } public class ExtendedGraph implements GraphExtension { private Graph graph; public ExtendedGraph(int vertexCount) { graph = new Graph(vertexCount); } @Override public int shortestPath(int source, int destination) { // 使用Dijkstra算法或其他算法计算最短路径 } // 代理Graph类的方法 public void addEdge(int source, int destination) { graph.addEdge(source, destination); } public List<Integer> getAdjacentVertices(int vertex) { return graph.getAdjacentVertices(vertex); } }
这样,你可以在不修改原始邻接表类的情况下,为其添加额外的功能。