我必须在链接列表中将所有标记移位一个位置。
这是我的方法代码:
private LLNode<E> head; // the first node in the list
private LLNode<E> tail; // the last node in the list
public void shiftLeft()
{
LLNode<E> temp = new LLNode<E>();
temp = head;
head = head.next;
tail.next = temp;
}
/*from main method
TopSpinLinkedList<Integer> ll = new TopSpinLinkedList<Integer>(numTokens, spinSize);
//fills LinkedList with tokens
for(int i = 1; i <= numTokens; i++) {
ll.add(i);
}
*/
在调用方法时,运行时会出现nullpointer错误。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
你必须考虑一些问题:
1)如果您的链接列表中不包含任何元素,那么什么?
2)对于要移动的所有令牌,你必须使用while循环。
答案 1 :(得分:0)
我认为在head
和tail
insert
和remove
已正确更新
public void shiftLeft()
{
if(head == null || head.next == null){
return;
}
LLNode<E> temp = new LLNode<E>();
temp = head;
head = head.next;
temp.next = null;
tail.next = temp;
tail = temp;
}
<强>更新强>
从评论中我看到OP提到了循环列表。这在OP中没有提到,或者从代码中可以看出。我会按原样留下答案。
答案 2 :(得分:0)
如果是循环链接列表,并且您的添加方法正常工作。
public void shiftLeft(){
head = head.next; tail = tail.next;
}