GIS中最短路徑分析——Dijkstra演算法
阿新 • • 發佈:2019-02-17
template<class T,class E> class Graphmtx:public Graph<T,E>{ friend istream& operator>>(istream& in,Graphmtx<T,E>& G); friend ostream& operator<<(ostream& out,Graphmtx<T,E>& G); public: Graphmtx(int sz); ~Graphmtx(){ delete []VerticesList; delete []Edge; } T getValue(int i){ return i>=0&&i<numVertices?VerticesList[i]:NULL; // 返回頂點陣列總的第i個元素 [8/26/2014 pan] } E getWeight(int v1,int v2){ return (v1!=-1&&v2!=-1) ? Edge[v1][v2] : 0; // 返回該邊的路徑代價 [8/26/2014 pan] } int getFirstNeighbor(int v); int getNextNeighbor(int v,int w); int NumberOfVertices(){return numVertices;} bool insertVertex(const T& vertex); bool insertEdge(int v1,int v2,E cost); bool removeVertex(int v); bool removeEdge(int v1,int v2); public: T * VerticesList; // 頂點表 [8/25/2014 pan] E ** Edge; // 鄰接矩陣 [8/25/2014 pan] int getVertexPos(T vertex){ for(int i=0;i<numVertices;i++){ if(VerticesList[i]==vertex){ return i; } return -1; } } int maxVertices; int numEdges; int numVertices; };
template<class T,class E>
class MinPath{
public:
E Distance; // 當前最短距離 [8/26/2014 pan]
T path; // 上一個節點 [8/26/2014 pan]
public:
MinPath(){this->Distance=maxValue;}
~MinPath(){}
};
這裡要說明一下,所有的MinPath物件一定要利用預設的建構函式將其Diatance屬性賦值為maxValue,