Java 实现图数据结构
在本文中,我们将了解如何实现图数据结构。我们使用HashMap集合在Java中实现图数据结构。HashMap元素的形式是键值对。我们可以用HashMap表示图的邻接表。
以下是相同的示例−
假设我们的输入是 −
Number of Vertices: 5
Number of edges: 5
所期望的输出将会是 -
The connections between the nodes of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5
步骤
Step 1 - START
Step 2 - Declare an object of a Graph class namely graph_object, two integers in class ‘Edge’ namely source and destination, and two integers in ‘main’ function namely vertices_count, edges_count.
Step 3 - Define the values.
Step 4 - Initialize values for the vertices and count.
Step 5 - Create a new instance of the previously defined class.
Step 6 - Initialize the instance with relevant values.
Step 7 - Iterate over the instance using a ‘for’ loop, and display the output on the console.
Step 8 - Display the result
Step 9 - Stop
示例1
在这里,我们将所有操作绑定在“main”函数中。
public class Graph {
class Edge {
int source, destination;
}
int vertices, edges;
Edge[] edge;
Graph(int vertices, int edges) {
this.vertices = vertices;
this.edges = edges;
edge = new Edge[edges];
for(int i = 0; i < edges; i++) {
edge[i] = new Edge();
}
}
public static void main(String[] args) {
int vertices_count = 5;
int edges_count = 8;
Graph graph_object = new Graph(vertices_count, edges_count);
System.out.println("A graph object is defined.");
graph_object.edge[0].source = 1;
graph_object.edge[0].destination = 2;
graph_object.edge[1].source = 1;
graph_object.edge[1].destination = 3;
graph_object.edge[2].source = 1;
graph_object.edge[2].destination = 4;
graph_object.edge[3].source = 2;
graph_object.edge[3].destination = 4;
graph_object.edge[4].source = 2;
graph_object.edge[4].destination = 5;
graph_object.edge[5].source = 3;
graph_object.edge[5].destination = 4;
graph_object.edge[6].source = 3;
graph_object.edge[6].destination = 5;
graph_object.edge[7].source = 4;
graph_object.edge[7].destination = 5;
System.out.println("The connections between the edges of the Graph are: ");
for(int i = 0; i < edges_count; i++) {
System.out.println(graph_object.edge[i].source + " - " + graph_object.edge[i].destination);
}
}
}
输出
A graph object is defined.
The connections between the edges of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5
示例2
这里,我们将操作封装到展示面向对象编程的函数中。
public class Graph {
class Edge {
int source, destination;
}
int vertices, edges;
Edge[] edge;
Graph(int vertices, int edges) {
this.vertices = vertices;
this.edges = edges;
edge = new Edge[edges];
for(int i = 0; i < edges; i++) {
edge[i] = new Edge();
}
}
static void print(Graph graph_object,int edges_count){
System.out.println("The connections between the edges of the Graph are: ");
for(int i = 0; i < edges_count; i++) {
System.out.println(graph_object.edge[i].source + " - " + graph_object.edge[i].destination);
}
}
static void connect_edges(Graph graph_object){
graph_object.edge[0].source = 1;
graph_object.edge[0].destination = 2;
graph_object.edge[1].source = 1;
graph_object.edge[1].destination = 3;
graph_object.edge[2].source = 1;
graph_object.edge[2].destination = 4;
graph_object.edge[3].source = 2;
graph_object.edge[3].destination = 4;
graph_object.edge[4].source = 2;
graph_object.edge[4].destination = 5;
graph_object.edge[5].source = 3;
graph_object.edge[5].destination = 4;
graph_object.edge[6].source = 3;
graph_object.edge[6].destination = 5;
graph_object.edge[7].source = 4;
graph_object.edge[7].destination = 5;
}
public static void main(String[] args) {
int vertices_count = 5;
int edges_count = 8;
Graph graph_object = new Graph(vertices_count, edges_count);
System.out.println("A graph object is defined.");
connect_edges(graph_object);
print(graph_object, edges_count);
}
}
输出
A graph object is defined.
The connections between the edges of the Graph are:
1 - 2
1 - 3
1 - 4
2 - 4
2 - 5
3 - 4
3 - 5
4 - 5