Witam, mam dość głupi problem - naczytałem się tyle tematów o tym, że jestem w totalnej kropce. Mianowicie chodzi mi o algorytm LIFO użyty w labiryncie. Poniższy kod przedstawia metodę przeszukiwania labiryntu : punkt startowy podany wcześniej ( tak samo jak i wyjściowy ), 0 - oznacza ścianę, 1 - podstawowa droga, każdy pkt w którym byłem podmieniam w macierzy na nr kroku.

// Poruszanie sie kolejnosc : dol, prawo, gora, lewo
	void Idz(){
		stos = new Stos(kolumna*wers);
	//	chod = new String[kolumna*wers];
		int x = startX;
		int y = startY;
		Point tmp;
		stos.Push(x, y);
		try{
			for(;;){
			if((x == endX)&(y == endY)){
				break;
			}else if(lab[x+1][y] == 1){
				x++;
				lab[x][y] = krok++;
				stos.Push(x, y);
//				Kroki();
			}else if(lab[x][y+1] == 1){
				y++;
				lab[x][y] = krok++;
				stos.Push(x, y);
//				Kroki();
			}else if(lab[x-1][y] == 1){
				x--;
				lab[x][y] = krok++;
				stos.Push(x, y);
//				Kroki();
			}else if(lab[x][y-1] == 1){
				y--;
				lab[x][y] = krok++;
				stos.Push(x, y);
//				Kroki();
			}else{
				tmp = stos.Pop();
				System.out.println(tmp);
				x = tmp.x;
				y = tmp.y;
				}
			}
		}catch(ArrayIndexOutOfBoundsException e1){
			System.out.println(e1);
		}		
	}

Pytanie główne : Czy jest to poprawnie wykonany algorytm LIFO ? Z tego co czytałem, nie ma ogólnie przyjętej zasady w który pkt mamy wybrać się kolejny, jeśli pkt startowy ma klika możliwości. Ja przyjąłem, że najpierw w dół a potem odwrotnie do wsk. zegara.