Java:删除具有Void返回类型的链表中的特定节点(相同值的第一个实例,如果有)
我不想用大量不必要的代码来填充这个空间,所以下面是我已经编写的代码: 创建删除特定节点(或相同值节点的第一个实例)的方法时遇到问题 我见过一些人尝试做同样的事情,但他们要么使用布尔返回类型,要么由于一些额外的方法,我无法将其正确转换为代码 并不是说我想要答案,但可以举个例子 这是我写的一部分,但不确定我是否走上了正确的道路Java:删除具有Void返回类型的链表中的特定节点(相同值的第一个实例,如果有),java,arrays,list,Java,Arrays,List,我不想用大量不必要的代码来填充这个空间,所以下面是我已经编写的代码: 创建删除特定节点(或相同值节点的第一个实例)的方法时遇到问题 我见过一些人尝试做同样的事情,但他们要么使用布尔返回类型,要么由于一些额外的方法,我无法将其正确转换为代码 并不是说我想要答案,但可以举个例子 这是我写的一部分,但不确定我是否走上了正确的道路 public void remove(DVD oneDVD) { DVDNode node = new DVDNode(oneDVD); DVDNode c
public void remove(DVD oneDVD)
{
DVDNode node = new DVDNode(oneDVD);
DVDNode current;
DVDNode previous;
if (list == null)
{
list = node;
}
else
{
previous = current;
current = current.next;
}
}
你要做的第一件事是在DVD中添加一个
equals()
方法。否则,您无法检查节点是否“值相同”。equals()
方法通过比较所有有效字段来工作,如果其中一个字段不同,则返回false;如果所有字段都相等,则返回true
然后,您的remove
方法可以执行其工作:
- 如果
为空-不执行任何操作first
- 否则,请先将
与给定的内的DVD
进行比较。如果它们DVD
,只需将相等
的第一个
分配给下一个
。完成了第一个
- 否则,启动一个循环:
此循环将在列表中查找给定的DVD。如果找到它,它将始终具有要连接的上一个节点。它只是取消当前节点的链接。请注意,它返回那里的previous = first; for ( current = first.next; current != null; current = current.next ) { if ( current.dvd.equals( oneDvd ) ) { previous.next = current.next; return; } previous = current; }
,并且不会继续到循环的末尾
return代码>@olavimutanoja我们还没有了解内置LinkedList。我们必须先从头开始。听起来我的方法在减去返回值后或多或少是正确的,但我得到了一些关于电流如何未初始化的信息。你知道我在那里要做什么吗?