我应该使用什么样的 Stack 数据结构?
What kind of Stack data structure should I use?
我正在编写一个解决迷宫的算法,我有一个名为 char [] [] 迷宫的迷宫。它的元素是这样的;
{1,1,1,1,1,1, ..},
{1,0,1,0,1,1, ..},
{1,0,0,1,0,1, ..}, ...
有 13 行和 17 列。我必须使用块数据结构来解决它。根据我心中设定的算法,我需要将可导航路径的索引值存储在这个堆栈中。比如根据上面的迷宫:
0,0
0,1
0,2
0,3
0,4
1,4
1,5
2,5...
我之前的例子都是用整数,所以在实现栈构造的时候就用了这样的结构
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;
}
}
}
我的问题就是这个。我如何为我的迷宫解算器程序修改这个堆栈结构?如果我需要再次说明,我必须在堆栈中保留坐标或类似的东西,而不是整数。非常感谢。
您可以创建一个名为 Coordinates 的新 class 对象。
此 class 将有两个主要参数,即 X 和 Y。
然后你可以制作一个用这个坐标对象而不是简单的整数填充的卡。
您正在构建的卡住可以是通用的并且包含比基本结构更复杂的结构,这就是您在此示例中看到的内容
简单来说,可以用二维数组来存储坐标:
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--];
}
}
我正在编写一个解决迷宫的算法,我有一个名为 char [] [] 迷宫的迷宫。它的元素是这样的;
{1,1,1,1,1,1, ..},
{1,0,1,0,1,1, ..},
{1,0,0,1,0,1, ..}, ...
有 13 行和 17 列。我必须使用块数据结构来解决它。根据我心中设定的算法,我需要将可导航路径的索引值存储在这个堆栈中。比如根据上面的迷宫:
0,0
0,1
0,2
0,3
0,4
1,4
1,5
2,5...
我之前的例子都是用整数,所以在实现栈构造的时候就用了这样的结构
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;
}
}
}
我的问题就是这个。我如何为我的迷宫解算器程序修改这个堆栈结构?如果我需要再次说明,我必须在堆栈中保留坐标或类似的东西,而不是整数。非常感谢。
您可以创建一个名为 Coordinates 的新 class 对象。 此 class 将有两个主要参数,即 X 和 Y。 然后你可以制作一个用这个坐标对象而不是简单的整数填充的卡。
您正在构建的卡住可以是通用的并且包含比基本结构更复杂的结构,这就是您在此示例中看到的内容
简单来说,可以用二维数组来存储坐标:
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--];
}
}