-1
我得到錯誤java.lang.NullPointerException
,同時實現節點的優先級隊列。有沒有人有沒有使用內置priorityqueue
類的解決方案?nullpointerexception同時實現節點優先級隊列
class node { //NODE CLASS
public String ch;
public int freq;
node right_child, left_child;
public node(String ch, int freq) {
this.ch = ch;
this.freq = freq;
}
public String get_char() {
return ch;
}
public int get_freq() {
return freq;
}
}
//END NODE CLASS
class priority_queue {
private final int size;
private final node[] q_array;
private int no_items = 0;
public priority_queue(int max) {
this.size = max;
q_array = new node[size];
}
public void insert(node item) {
int j;
if (no_items == 0) {
q_array[++no_items] = item;
System.out.println("first item");
} else {
for (j = no_items - 1; j >= 0; j--) {
if (item.get_freq()> q_array[j].get_freq()) {
q_array[j + 1] = q_array[j];
} else {
break;
}
}
q_array[j] = item;
no_items++;
}
}
public node remove() {
return q_array[--no_items];
}
public void process() {
node first, second;
int new_freq;
while (q_array.length > 1) {
new_freq = 0;
first = this.remove();
//f1 = first.freq;
second = this.remove();
//f2=second.freq;
new_freq = first.get_freq() + second.get_freq();
node new_node = new node("*", new_freq);
new_node.left_child = first;
new_node.right_child = second;
this.insert(new_node);
}
}
我相應地修改了它,如下所示,q_array [no_items] = item; no_items ++ ;.但仍然得到NPE ....... :(: – sawyer
然後你有一個問題,NPE有一個堆棧跟蹤指向問題的地方,請在這裏提供。 –