我需要编写一个方法findMove(E e)
,它接受一个元素e
并检查它是否存在于链表中。如果是,该函数将该元素移动到链表的前面并返回true
。否则,它什么也不做并返回false
。到目前为止我的代码如下。
public boolean findMove(E e) {
Node previous=head;
Node current=head;
while(current !=null){
if(e.equals(current.item)){ // item has been found
previous.next=current.next;
current.next=head;
head=current;
return true;
}
previous = current;
current=current.next;
}
return false;
}
这段代码按预期工作,但是我想加倍努力并重写这段代码,这样我就不会创建任何新节点。按照目前的情况,我正在添加一个先前的和当前的节点。
我的问题是,有没有办法重写这段代码,这样我就不会创建任何新节点?
最佳答案
此代码中没有创建新的 Node 实例。
Node previous=head;
Node current=head;
这些只是对现有节点的引用。创建一个新节点需要调用Node
的构造函数:
Node blah = new Node(...);
关于java - 如何更好地找到链表中的项目并将其移动到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335549/