如何使用泛型类来解决迷宫?

时间:2017-05-31 17:28:32

标签: java generics stack queue maze

我正在开发一个迷宫解算器程序,该程序基本上从文本文件中读取迷宫,从起点开始,检查周围的所有边并移动到开放空间,标记前一个位置并在找到出口时终止。 / p>

虽然算法本身已经完成,但有些事情我想澄清一下。该程序需要使用通用类Stack,Queue和Coordinates(存储当前的x,y坐标),我没有使用(我使用Vector来保存位置)和其他操作,例如堆叠队列内部叠加。

这是主循环:

if(maz[x][y-1]==' '||maz[x][y-1]=='S'){
    if(maz[x][y-1]=='S')
        exitfound=true;
    maz[x][y]='*';
    maz[x][y-1]='@';
    y=y-1;
}

它检查上面的坐标是开放空间还是出口('S'),如果是真的,它会移动到那里,同时用*标记前一个位置,并用'@标记它移动到的位置”。这也与其他3个方面重复。在程序结束时,所有步行空间都会标有*。但是,我需要使用所述泛型类来操作坐标。

这些是必需的类及其对象:

Stack<Coordinate> path = new Stack<Coordinate>(40);
Stack<Queue<Coordinate>> possibilities = new Stack<Queue<Coordinate>>(40);
Coordinate current = new Coordinate(x,y);
Queue<Coordinate> queue = new Queue<Coordinate>(3);

我不明白如何在current对象上存储坐标,并在queue类的Queue<Coordinate>对象中插入坐标,并在queue上堆叠possibilities对象{1}}对象,来自班级Stack<Queue<Coordinate>>。这是怎么做到的?

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式添加到队列:

db

queue就像主题公园的一条线。第一个人是第一个人(FIFO)。 stack就像一堆盘子。你放下的第一个盘子是你使用的最后一个盘子。后进先出(LIFO)。

Javadoc:StackQueue