我正在开发一个项目,我在实施最短路径算法时使用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循环中,我不断从中获取相同的元素。