java - 如何更好地找到链表中的项目并将其移动到前面

标签 java linked-list

我需要编写一个方法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/

相关文章:

java - 如何在 Spring 集成中将 XML JMS 消息发送到 FTP

java - 当 Eclipse 说它正在更新索引时,它在做什么?

java - 我在开展运营时遇到问题

c++ - 如何在不出现此错误的情况下将 listnode 值设置为 Null?

c - 从链表中删除和返回值

c - c中的链表插入: inserting wrong values

java - java中类中的公共(public)静态字段

java - 如何在执行代码之前等待计时器停止?

algorithm - 反转替代元素并附加到列表末尾

LINUX LISH.H list_for_each 无限循环