java - 如何向链表添加元素?

标签 java list

因此,项目的一部分的方法要求我检查 E 元素是否已在节点列表中。如果没有,那么我将该元素添加到列表中并返回 true(因为该方法是 boolean 类型)。但是,我的 JUnit 测试类中不断出现错误。所以我想知道我的代码目前有什么问题。方法如下:

public boolean add(E element) 
{
    for(Node ref = first; ref != null; ref = ref.next)
    {
        first  = new Node(element);

        if(!(element.equals(ref.data)))
        {
            n++;
            add(element);
            return true;
        }
        else if(element.equals(ref.data))
        {
            return false;
        }
    }
return false;
}

我很确定我格式化代码的方式是错误的。我对节点不太熟悉,因为我对数组很熟悉,所以这就是代码可能令人丢脸的原因。顺便说一句,n 代表大小。

最佳答案

您的方法似乎结合了递归方法和迭代方法来进行搜索,并且在这两种情况下,您都不处理将新元素实际添加到列表中的操作。

您没有指定新元素应添加到哪里(前面或后面),所以我假设在前面。我还假设代码中的 first 是类的一个字段,因为它没有以其他方式声明。

递归解决方案在这里没有多大意义,并且在这种情况下没有我看到的任何优点。因此,这是一种迭代解决方案,如果找不到,则将新元素放在前面:

public boolean add(E element) 
{
    for (Node ref = first; ref != null; ref = ref.next)
    {
        if (element.equals(ref.data)) {
            return false;
        }
    }
    Node newFirst = new Node(element);
    newFirst.next = first;
    first = newFirst;
    return true;
}

关于java - 如何向链表添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970872/

相关文章:

python - 值错误: malformed node or string error when parsing lists from a text file

javascript - 从列表项中删除类并使用 jquery 将类添加到不同的列表项

java - 与数组列表和 toString 方法相关

java - 字符串到数组 Int

java - 有没有办法使用 Maven 将 git 存储库 checkout 到某个文件夹?

java - 引入依赖会破坏现有的依赖吗?

r - 如何取消列出矩阵元素列表并获得矩阵组合作为输出而不是R中的向量

java - Android Wear 谷歌地图

Java程序运行时错误

list - 一种生成给定长度组合的更快方法,保留顺序