図隣接マトリックス深さ優先エルゴード
3843 ワード
Eclipse javaプロジェクト:図の深さは優先的に遍歴し、広さは優先的にdemoを遍歴する:http://download.csdn.net/detail/keen_zuxwang/9875848
import java.util.ArayList;import java.util.Linked List;/**@description隣接マトリックスモデルクラス*/public class Graph{prvate ArayList vertexList]//格納点のチェーンプリヴァットポイント[]edges;/隣接マトリックスは、サイドprivte int numOfEdgesを格納するために使用されます./辺の数prvate int n;
import java.util.ArayList;import java.util.Linked List;/**@description隣接マトリックスモデルクラス*/public class Graph{prvate ArayList vertexList]//格納点のチェーンプリヴァットポイント[]edges;/隣接マトリックスは、サイドprivte int numOfEdgesを格納するために使用されます./辺の数prvate int n;
public Graph(int n) {
// , ,
this.n = n;
edges=new int[n][n];
vertexList=new ArrayList(n);
numOfEdges=0;
}
//
public int getNumOfVertex() {
return vertexList.size();
}
//
public int getNumOfEdges() {
return numOfEdges;
}
// i
public Object getValueByIndex(int i) {
return vertexList.get(i);
}
// v1,v2
public int getWeight(int v1,int v2) {
if((v1>=0 && v1=0 && v20) {
return j;
}
}
return -1;
}
//
public int getNextNeighbor(int v1,int v2) {
for (int j=v2+1;j0) {
return j;
}
}
return -1;
}
public static void main(String args[]) {
int n=4,e=4;//
int i = 0, j;
int idx;
String labels[]={"V0","V1","V2","V3"};//
Graph graph=new Graph(n);
for(String label:labels) {
graph.insertVertex(label);//
System.out.print(" "+i+", "+label+"
");
i++;
}
System.out.print("
");
//
graph.insertEdge(0, 1, 2); //v0 v1
graph.insertEdge(0, 2, 5); //v0 v2
graph.insertEdge(0, 3, 1); //v0 v3
graph.insertEdge(2, 3, 8); //v2 v3
graph.insertEdge(3, 0, 7); //v3 v0
System.out.println(" :"+graph.getNumOfVertex());
System.out.println(" :"+graph.getNumOfEdges());
System.out.print("
");
System.out.print("
");
for(i=0; i0){
idx = graph.getNextNeighbor(0, idx);
System.out.print(" 0: "+idx+", "+graph.getWeight(0,idx));
System.out.print("
");
if(idx>0){
idx = graph.getNextNeighbor(0, idx);
System.out.print(" 0: "+idx+", "+graph.getWeight(0,idx));
System.out.print("
");
if(idx>0){
graph.deleteEdge(0, idx);//
System.out.print(" , ");
idx = graph.getNextNeighbor(0, idx);
System.out.print(" 0: "+idx+", "+graph.getWeight(0,idx)); // -1
System.out.print("
");
System.out.print("
");
for(i=0; i
)