优先队列 java
Priority Queue java
抱歉打扰了,不过,我和一个朋友在这个问题上已经坐了一段时间了,我们似乎被困住了。我们必须创建一个与元素 class 交互的 PriorityQueue class。 main 方法中的思想是根据优先级将元素放入队列,然后 return 这些元素以正确的顺序排列。现在,如果我们尝试使用这段代码,我们会得到一个 java.lang.NullPointerException
。我们的 getPriority 看起来像这样:
public int getPriority() {
return priority;
}
我们真的不知道空指针异常从何而来...
public class PriorityQueue {
static final int SIZE = 32;
Element[] q = new Element[SIZE];
int len;
int head = 31;
int tail = 31;
// Insert an element into the queue according to its priority
boolean put(Element x) {
if (head == 0) { return false;} else {
for (int g=31; g >= 0; g--) {
if (q[g].getPriority() == x.getPriority()||(q[g].getPriority() < x.getPriority() && q[g-1].getPriority() > x.getPriority())) {
for (int y=g; y >= head; y--) {
Element z = q[y];
q[y] = x;
q[y-1] = z;
}
}
}
} head--;
return true;
}
// Return the element with the highest priority from the queue
Element get() {
return q[head];
}
// Return the queue length
int length() {
return q.length;
}
// Print the queue contents
public String toString() {
return q.toString();
}
}
非常感谢您。
所以你有一个空数组 Elements
然后你做这样的事情:
for (int g=31; g >= 0; g--) {
if (q[g].getPriority() == x.getPriority()||(q[g].getPriority() < x.getPriority() && q[g-1].getPriority() > x.getPriority())) {
q[g]
不会 null
在这里吗?
抱歉打扰了,不过,我和一个朋友在这个问题上已经坐了一段时间了,我们似乎被困住了。我们必须创建一个与元素 class 交互的 PriorityQueue class。 main 方法中的思想是根据优先级将元素放入队列,然后 return 这些元素以正确的顺序排列。现在,如果我们尝试使用这段代码,我们会得到一个 java.lang.NullPointerException
。我们的 getPriority 看起来像这样:
public int getPriority() {
return priority;
}
我们真的不知道空指针异常从何而来...
public class PriorityQueue {
static final int SIZE = 32;
Element[] q = new Element[SIZE];
int len;
int head = 31;
int tail = 31;
// Insert an element into the queue according to its priority
boolean put(Element x) {
if (head == 0) { return false;} else {
for (int g=31; g >= 0; g--) {
if (q[g].getPriority() == x.getPriority()||(q[g].getPriority() < x.getPriority() && q[g-1].getPriority() > x.getPriority())) {
for (int y=g; y >= head; y--) {
Element z = q[y];
q[y] = x;
q[y-1] = z;
}
}
}
} head--;
return true;
}
// Return the element with the highest priority from the queue
Element get() {
return q[head];
}
// Return the queue length
int length() {
return q.length;
}
// Print the queue contents
public String toString() {
return q.toString();
}
}
非常感谢您。
所以你有一个空数组 Elements
然后你做这样的事情:
for (int g=31; g >= 0; g--) {
if (q[g].getPriority() == x.getPriority()||(q[g].getPriority() < x.getPriority() && q[g-1].getPriority() > x.getPriority())) {
q[g]
不会 null
在这里吗?