程序中要用到最短路径的寻找,就用了迪杰斯特拉算法,在网上找了个实现,然后自己又升了下级,如下:
package reverse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
public class DijSuccess {
public static int INFINITY = 99999;
public static Map<String,Vertex> vertexMap = new HashMap<String,Vertex>();
//边距
static class Edge{
public Vertex dest;
public double cost;
public Edge(Vertex d,double c){
this.dest = d;
this.cost = c;
}
}
//静态类:Vertex
static class Vertex implements Comparable<Vertex>{
public String name;
public List<Edge> adj;
public double dist;
public Vertex prev;
public int scratch;
public boolean visited;
public Vertex(String nm){
this.name = nm;
adj = new ArrayList<Edge>();
reset();
}
public void reset(){
visited = false;
dist=DijSuccess.INFINITY;
}
@Override
public int compareTo(Vertex o) {
double c = o.dist;
return dist < c ? -1:dist > c ? 1:0;
}
}
//dijkstra算法实现:找到从startName点出发,到其他所有点的最短路径:选取自己定义的终点
public static void dijkstra(String startName,String endName){
PriorityQueue<Vertex> pq = new PriorityQueue<Vertex>();//该队列以权值升序排列,因为Vertex实现Comparable接口
Vert