这是我的Josephus类的add方法,我应该使用循环链接列表。我在我的类的一些区域中获得空指针异常,但这都是因为这种方法。通过查看此代码,任何人都可以看到任何明显的错误吗?
/** Inserts the specified element in the list at the
last position
@param dataItem the element to add
*/
// Complexity O(1)
@SuppressWarnings({ "unchecked" })
public void add(E dataItem) {
Node <E> node = new Node <E> (dataItem,null,null);
if (count == 0){ // list is empty
head = node.previous= node;
}
else {
head.previous.next = node;
node.previous = head.previous;
head.previous = node;
}
count++;
}
答案 0 :(得分:6)
是的,您需要将else
部分用大括号括起来:
public void add(E dataItem) {
Node <E> node = new Node <E> (dataItem, null, null);
if (count == 0) { // list is empty
head = node.previous= node ;
} else {
(head.previous).next = node;
node.previous = head.previous;
head.previous = node;
}
count++;
}
否则,每次执行最后三行而不是最后一行。
答案 1 :(得分:1)
你在if / else块周围没有花括号