我有一个用图表表示的网格。每个“节点”称为Cell。
我想要输出的是从A到B的路径。我在控制台上写了输出,我发现它是错误的。特别是它似乎产生了一个“跳跃”很多的路径,意思是从一个节点到下一个节点没有直接链接。
如果正常工作,我只需要一条从A到B的路径,而不是到达每个节点的路径。
我的代码出了什么问题?
Cell是一个包含List<Cell> NearCells
的对象,其中包含所有adiacent单元格的引用。
private List<Cell> FindPath(Cell A, Cell B)
{
List<Cell> path = new List<Cell>();
List<Cell> visited = new List<Cell>();
path.Add(A);
while (path.Count != 0)
{
Cell c = path[0];
path.RemoveAt(0);
visited.Add(c);
if (c == B)
return path;
foreach (Cell near in c.NearCells)
{
if (!visited.Contains(near))
{
visited.Add(near);
path.Add(near);
}
}
}
return path;
}