![](/img/trans.png)
[英]What data structure should I use for implementing least-expiry-time-remaining-next kind of scheduling
[英]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...
我在之前的例子中都是保留了一個integer的數字,所以在實現棧構建的時候就采用了這樣的結構。
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;
}
}
}
我的問題正是這個。 我如何為我的迷宮解算器程序修改這個堆棧結構? 如果我需要再次 state ,我必須在堆棧中保留坐標或類似的東西,而不是整數。 非常感謝。
您可以創建一個新的 class object 稱為坐標。 這個 class 將有兩個主要參數,即 X 和 Y。然后你可以制作一個填充坐標 object 而不是簡單的 Integer 的卡。
您正在構建的卡住可以是通用的,並且包含比基本結構更復雜的結構,這就是您在此示例中看到的
簡單來說,一個二維數組可以用來存儲坐標:
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--];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.