package图;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.Iterator;importjava.util.List;importjava.util.Stack;public classGraph {public static List vertexList=new ArrayList();public static List EdgeQueue=new ArrayList();public static List newVertex=new ArrayList();public static List newEdge=new ArrayList();public static voidbuildGraph(){
Vertex a=new Vertex("a");
vertexList.add(a);
Vertex b=new Vertex("b");
vertexList.add(b);
Vertex c=new Vertex("c");
vertexList.add(c);
Vertex d=new Vertex("d");
vertexList.add(d);
Vertex e=new Vertex("e");
vertexList.add(e);
Vertex f=new Vertex("f");
vertexList.add(f);
addEdge(a, b,3);
addEdge(a, e,6);
addEdge(a, f,5);
addEdge(b, a,3);
addEdge(b, c,1);
addEdge(b, f,4);
addEdge(c, b,1);
addEdge(c, d,6);
addEdge(c, f,4);
addEdge(d, c,6);
addEdge(d, f,5);
addEdge(d, e,8);
addEdge(e, d,8);
addEdge(e, f,2);
addEdge(e, a,6);
addEdge(f, a,5);
addEdge(f, b,4);
addEdge(f, c,4);
addEdge(f, d,5);
addEdge(f, e,2);
}public static void addEdge(Vertex start,Vertex end,intvalue){
Edge e=newEdge(start,end,value);
EdgeQueue.add(e);
}public static booleancontainVertex(Vertex v){for(Vertex each:newVertex)
{if(each.value.equals(v.value))return true;
}return false;
}public static voidprim(){
buildGraph();
Vertex start=vertexList.get(0);
newVertex.add(start);for(int i=0; i
{
Vertex temp=newVertex(start.value);
Edge tempEdge=new Edge(start, start, 1000);for(Vertex v:newVertex)
{for(Edge e:EdgeQueue)
{if(e.start==v && !containVertex(e.end))
{if(tempEdge.value>e.value)
{
tempEdge=e;
temp=e.end;
}
}
}
}
newVertex.add(temp);
}
Iteratori=newVertex.iterator();while(i.hasNext())
{
Vertex v=i.next();
System.out.print(v.value+" ");
}
}public static voidkruskal(){
buildGraph();
sort();
}public static voidsort(){
Comparatorcomparator=new Comparator(){
@Overridepublic intcompare(Edge e1, Edge e2) {//TODO Auto-generated method stub
return e1.getValue()-e2.getValue();
}
};
Collections.sort(EdgeQueue,comparator);
}public static voidmain(String[] args) {
prim();
}
}