【发布时间】:2020-09-06 20:02:08
【问题描述】:
对于我的一项实验室作业,我必须创建一个从链表中删除节点的 recRemove 方法。这是我到目前为止所做的工作:
private LLNode<T> recRemove(LLNode<T> node, T data) {
if(node == null) {
return null;
}
if(node == data) {
LLNode<T> temp = new LLNode<T>(data);
node = temp;
temp.setLink(node.getLink());
}
return recRemove(node.getLink(), data);
}
@Override
public boolean remove(T data) {
recRemove(front, data);
}
我无法弄清楚如何将返回的节点从 recRemove 转换为布尔值。我从这一行得到一个错误:
recRemove(front, data);
另外,这里是从 CollectionInterface 实现的 remove 方法:
/**
* Removes element if found
* @param element
* @return true if found and removed, otherwise false
*/
boolean remove(T element);
【问题讨论】:
-
为什么要新建节点?此外,最后的描述听起来更像是“包含”功能而不是“删除”。
-
所以它应该只是'node.setLink(node.getLink())'吗?
-
那是我的错,我更新了描述。
-
不应该
if(node == data)改为检查node的值(也可能使用equals而不是==)?此外,删除节点后,您似乎没有更新node的前身以正确指向temp(分别更改front的值)。目前,您的代码将删除所有出现的值(如果有多个值),如果打算将其添加到您的remove方法的 javadoc 中会很好。 -
这能回答你的问题吗? Remove node from linked list recursively
标签: java