如何在Android中使用Stack?

时间:2015-10-17 16:56:47

标签: java android

我正在开发一个项目,我在实施最短路径算法时使用Stack。但是,当我尝试弹出所有元素时,我不断从堆栈中获取相同的元素。我不确定我是以错误的方式推送元素,还是以错误的方式弹出,甚至是以错误的方式初始化。所以帮帮我解决问题,这是我的代码:

    Stack<Point> path = new Stack<>();

    public void addToContour(Point p){

    if(contour.isEmpty()){
        contour.add(p);
        Log.i(TAG, "contour is empty");
    } else{
        Log.i(TAG, "contour not empty");

        findPath(p);  // see the body of this function below

        while(!path.empty()){
            Point pathP;
            pathP = path.pop();  //pop the elements added in findPath()
            contour.add(pathP);
            Log.i(TAG, "point: " + pathP.x + " " + pathP.y);
        }

    }

    computePath(p);

}

在函数findpath()中:

public void  findPath(Point point){

    if (!contour.isEmpty()) {

        Point p = point;

        int direction = toParent[(int) p.y][(int) p.x];
        while (direction != 10) {
            path.push(p);  // push elements into "path"
            p.x = p.x + shift.get(direction).x;
            p.y = p.y + shift.get(direction).y;
            direction = toParent[(int) p.y][(int) p.x];
            Log.i(TAG, "point: " + p.x + " " + p.y);
        }

    }

}

正如你所看到的,我有&#34; Log&#34;用于在两个while循环中进行调试。在我推动堆栈的那一行中,它表示所有元素都是不同的,但是,在另一个while循环中,我不断从中获取相同的元素。

0 个答案:

没有答案