function Dijkstra(G,pointStart) { //定义 std::queue<Point> quePassedPoints; std::queue<Point> queUnPassedPoints; Point pointTemp; int nDistance[nNumberOfPoints]; //初始化 for each point in G[point] { nDistance[point.GetIndex()] = infinite; previous[point.GetIndex()] = undefined; } nDistance[pointStart.GetIndex()]=0; quePassedPoints = empty set; queUnPassedPoints = setOfAllPoints; while queUnPassedPoints is not empty set { pointTemp = Extract_Min(queUnPassedPoints);//在未经过的点中寻找最小Distance[point]的顶点 quePassedPoints.insert(pointTemp); for each edge (pointTemp,pointAnother) outgoing from pointTemp { if( nDistance[pointAnother] > nDistance[pointTemp] + edge(pointTemp,pointAnother) { nDistance[pointAnother] = nDistance[pointTemp] + edge(pointTemp,pointAnother); previous[pontAnother] = PointTemp; } }//end of for }//end of while }//end of function