Estoy escribiendo un algoritmo que resuelve un laberinto y tengo un laberinto llamado char [] [] maze. Sus elementos ser como;
{1,1,1,1,1,1, ..}, {1,0,1,0,1,1, ..}, {1,0,0,1,0,1, ..}, ...Hay 13 Filas y 17 Columnas. Tengo que resolverlo usando la estructura de datos de fragmentos. Según el algoritmo que he configurado en mi mente, necesito almacenar los valores de índice de la ruta navegable en esta pila. Por ejemplo, según el laberinto anterior:
0,0 0,1 0,2 0,3 0,4 1,4 1,5 2,5...Solía mantener un número entero en mis ejemplos anteriores, así que usé una estructura como esta al implementar la construcción de pilas.
public class Stack { int topOfStack; int capacity; int[] Stack; public Stack(int capacity) { this.capacity = capacity; Stack = new int[capacity]; topOfStack = -1; } void push(int element) { if(topOfStack == capacity){ System.out.println("Stack Overflow..."); } else{ topOfStack++; Stack[topOfStack] = element; } } }Mi pregunta es exactamente esta. ¿Cómo puedo modificar esta estructura de pila para mi programa de resolución de laberintos? Si necesito volver a indicarlo, debo mantener las coordenadas o algo similar en la pila, no los números enteros. Muchas gracias.
Puede crear un nuevo objeto de clase que se llame Coordenadas. Esta clase tendrá dos parámetros principales que son X e Y. Luego, puede hacer un atascado que se llene con este objeto de coordenadas en lugar de un entero simple.
El atascado que está construyendo puede ser genérico y contener estructuras más complejas que la básica y esto es lo que está buscando en este ejemplo.
En pocas palabras , se podría usar una matriz 2D para almacenar las coordenadas:
public class Stack { int topOfStack; int capacity; int[][] stack; public Stack(int capacity) { this.capacity = capacity; stack = new int[capacity][2]; topOfStack = -1; } void push(int x, int y) { if(topOfStack == capacity){ System.out.println("Stack Overflow..."); } else{ stack[++topOfStack] = new int[] { x, y }; } } int[] pop() { if (topOfStack < 0) { System.out.println("Stack is empty"); return null; } return stack[topOfStack--]; } }