0
私はプログラミングに慣れていないので、自分でデータ構造を学習しようとしています。私は隣接リストを使用して重み付けされていないグラフクラスを実装しようとしていますが、getAdjacentVerticesメソッドの実装に問題があります。私は本当にこのトピックを説明していない使用しています。*隣接リストを使用した重み付けされていないグラフ
enter code here
public class Graph {
private ArrayList<Integer> vertices;
private ListNode[] edges;
private int vertexCount = 0;
public Graph(int vertexCount){
this.vertexCount = vertexCount;
vertices = new ArrayList<Integer>();
edges = new ListNode[vertexCount];
for(int i = 0; i < vertexCount; i++){
vertices.add(i);
edges[i] = new ListNode();
}
}
public void addEdge(int source, int destination){
int i = vertices.indexOf(source);
int j = vertices.indexOf(destination);
if(i != -1 || j != -1){
edges[i].insertAtBeginning(destination);
edges[j].insertAtBeginning(source);
}
}
public int getNumberVertices() {
return vertexCount;
}
public Object getAdjacentVertices(int currentVertex) {
}
}
C.Francuありがとうございましたこれは現在より明確です。それは有向グラフであるはずです。何かのように:A:B-> D; B:D-> E ...これは、各インデックス(頂点)が、頂点が隣接する辺を含むリンクリストに接続されている配列ではどのように表現されますか。どのヘルプも本当にありがたいです – Charizard
ああ、それでは大丈夫です。私はあなたの元のコードが両方のノードの隣接リストに '(source、destination)'の各辺を追加したという事実によって捨てられました。グラフが指示されている場合、 'addEdge()'では最初の追加を呼び出すだけです。だから、あなたは 'edges.get(u).add(v);'を呼び出しますが、edges.get(v).add(u);は呼び出しません。 –