我正在尝试实现图形。我无法理解为什么我的代码无法正常工作。我试图看看哪里出了问题,但无法弄清楚,我的想法也没有给出任何错误。 我是初学者,有人可以告诉我我要去哪里,为什么? 我在下面发布我的代码。
import java.util.*;
class Graph {
private int V;
private LinkedList<Integer>[] adjList ;
Graph(int V) {
adjList = new LinkedList[V];
for(int i=0 ; i<V ; i++) {
adjList[i] = new LinkedList<Integer>();
}
}
public void addEdge(int v, int w) {
adjList[v].add(w);
}
public void printGraph(Graph graph) {
for(int i=0 ; i<graph.V ; i++) {
for(Integer pCrawl : graph.adjList[i]){
System.out.print(pCrawl+" ");
}
}
}
public static void main(String[] args) {
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
g.printGraph(g);
}
}
答案 0 :(得分:1)
您的Graph
类具有一个名为V
的字段。构造函数还会收到一个参数int V
。它们不是相同的变量。除非您初始化字段V
,否则它将为零。
所以这个循环
for(int i=0 ; i<graph.V ; i++)
立即退出。
在构造函数中将字段V
设置为接收到的变量V
的方法是添加
this.V = V;
在您的构造函数内部。
答案 1 :(得分:1)
您需要像V
那样初始化this.V = V;
,例如:printGraph
。方法public void printGraph() {
for(int i=0 ; i<V ; i++)
for(Integer pCrawl : adjList[i])
System.out.print(pCrawl+" ");
}
并不需要接收Graph varibale,您可以这样写:
{{1}}
答案 2 :(得分:0)
您需要打印整行来管理y轴,并通过adjList中元素的数量限制i:
public void printGraph(Main graph) {
for(int i=0 ; i<graph.adjList.length ; i++) {
for(Integer pCrawl : graph.adjList[i]){
System.out.print(pCrawl+" ");
}
System.out.println("");
}
}
将输出以下内容:
1 2
2
0 3
3
如果要旋转它,只需更改添加的参数:)