我被困在这条路上,它真的开始让我感到沮丧。我认为除了这一种方法外,我的一切工作正常。
当我从我的 LL 中删除一个节点时,我在下一次尝试时得到一个空指针异常,我不知道是什么。
public void timeSlice(int cpuTime){
for(Node curr=head; curr.getNext()!=head; curr=curr.getNext()){
curr.time=curr.time-cpuTime;
System.out.print("<" + curr.pid + ", " + curr.time +">" + " ");
//if the time remaining <= 0 then remove the node
if(curr.time<=0){
System.out.println("\nProcess " + curr.pid + " has finished, and is now being terminated");
remove(curr);
}
}
}//end timeSlice
它发生在删除并重新启动该方法之后。我认为这是因为我刚刚删除了 curr,但我不是 100% 确定。
public void remove(Node node){
if(size == 0){
return;
}
else if(size == 1){
removeFirst();
}
else{
Node curr;
for(curr=head; curr.getNext()!=node; curr=curr.getNext()){
;
}
curr.setNext(curr.getNext().getNext());
node.setNext(null);
}
size --;
}//end remove
现在当前的测试是它将删除倒数第二个节点