List<PointData>openList = new List<PointData>();
openList.Add(new PointData(START_PNT,0,0,null));
PointData endPoint = null
for(bool finish = false;!finish&&openList.Count>0;)
{
openList.Sort((x,y)=>{return x.F().CompareTo(y.F());});//最小在上最大在下,降序排列
PointData data = openList[0];
openList.RemoveAt(0);//最小值从开列表去除
Point point = data.point;
if(MAP[point.x,point.y] == SPACE)
{
MAP[point.x,point.y] = VISITED;
}
for(int i = 0;i<directs.Rank;i++){
Point newPoint = new Point(point.x+directs[i,0],point.y+directs[i,1]);
if(newPnt.x>=0&&newPnt.x<MAX_PNT.x&&newPnt.y>=0&&newPnt.y<MAX_PNT.y){
char e = MAP[newPoint.x,newPoint.y];
if(e == END){
endPoint = data;
finish = true;
break;
}
if(e!=SPACE){
continue;
}
//扩展后的点若在开表终则更新g值
PointData tempData = openList.Find((x=>{return x.point.Equals(newPoint);}));
if(tempData!=null){
}
}
}
}