附加空队列

时间:2015-10-15 19:04:57

标签: java

我正在开发一个基数排序程序,它将使用队列作为垃圾箱。我正在使用我用于队列的append方法出错。当我尝试运行程序时,我输入一些单词进行输入,然后在尝试运行程序的bin排序部分时出现错误。它给了我以下错误:

Exception in thread "main" java.lang.NullPointerException
  at LinkedQueue.append<LinkedQueue.java:53>
  at RadixSort.main<RadixSort.java:31>

我首先假设这是因为我追加的队列是空的,所以我在append方法中添加了一个if语句来解释这个问题。在JUnit中测试之后,它可以工作 - 我可以将队列附加到空队列,并且所有数据值都在正确的位置,并且可以按正确的顺序出列。当我运行该程序时,它仍然无法正常工作。然后我意识到某些bin是空的,并在if语句中添加了一个条件来解释添加到队列中的空队列。我在JUnit中再次测试了它并且它成功地运行了。但是程序仍然无法运行 - 我得到与上面相同的运行时错误。我对这里没有考虑到的东西感到困惑 - 空值在哪里?下面我在LinkedQueue ADT类中包含了append方法的代码。此外,我正在使用节点来连接值 - .data是数据值,.next指向下一个节点。

public void append(LinkedQueue<T> q){
  if(this.isEmpty()){
    this.enqueue(q.front.data);
    this.front.next = q.front.next;
    this.rear = q.rear;
  }else if(!this.isEmpty() && !q.isEmpty()){
    this.rear.next = q.front;
    this.rear = q.rear;
  }else{
    return;
  }
}

此外,这是基数排序中的一段代码,它将所有队列箱附加到“主”队列(错误位于RadixSort.java:31):

  for(int n=0;n<26;n++){
     masterq.append(bins[n]);
  }

这是一项家庭作业,所以如果你能指出我可以解决问题的正确方向,我将非常感激。

0 个答案:

没有答案