在java中移动链表中的元素



我必须将链表中剩下的所有标记移动一个位置。

下面是我的方法代码:
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);
}
*/

在运行时调用该方法时出现空指针错误。任何帮助都会很感激。谢谢。

如果它是循环链表和您的添加方法工作正常。

public void shiftLeft(){
    head = head.next; tail = tail.next;
}

你必须考虑以下几点:
1)如果你的链接列表不包含任何元素,然后呢?
2)对于所有要移动的令牌,你必须使用while-loop。

我假设headtailinsertremove上得到了适当的更新

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中没有提到这一点,从代码中也看不出来。我将保留答案。

相关内容

  • 没有找到相关文章

最新更新