因此,项目的一部分的方法要求我检查 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/