简单LinkedList在Java中的自实现
我正在读一篇关于用Java实现简单LinkedList的文章,并对它进行了修改,几乎并没有对我的小项目进行任何更改。除删除方法外,一切正常。简单LinkedList在Java中的自实现,java,list,linked-list,Java,List,Linked List,我正在读一篇关于用Java实现简单LinkedList的文章,并对它进行了修改,几乎并没有对我的小项目进行任何更改。除删除方法外,一切正常。 交易是,我必须删除相应的元素。我的意思是(这是我的删除方法): 因此,问题在于如下-当我删除列表中的第一个obj(通过将其设置为remove参数)时,它会消失,但如果我尝试删除第二个或任何其他对象,则我想要删除的对象之后的下一个对象会被删除。 我将感谢任何帮助,提前谢谢。如果需要更多信息,请填写我的LinkedList的完整代码。问题似乎出现在代码的这一部
交易是,我必须删除相应的元素。我的意思是(这是我的删除方法): 因此,问题在于如下-当我删除列表中的第一个obj(通过将其设置为remove参数)时,它会消失,但如果我尝试删除第二个或任何其他对象,则我想要删除的对象之后的下一个对象会被删除。
我将感谢任何帮助,提前谢谢。如果需要更多信息,请填写我的LinkedList的完整代码。问题似乎出现在代码的这一部分:
Link linkCurr = head;
if (head != null) {
for (int i = 0; i < size; ++i) {
if (obj.equals(linkCurr.getData())){
linkCurr.setNext(linkCurr.getNext().getNext());
size--;
break;
}
linkCurr = linkCurr.getNext();
}
}
linkCurr=head;
if(head!=null){
对于(int i=0;i
这是在列表中搜索与输入节点匹配的节点。然后,它将该节点的下一个链接设置为下线的节点2,删除相邻节点
您可能希望保留上一个节点的索引,并对其执行setnext,例如:
Link linkCurr = head;
Link previous = null;
if (head != null) {
for (int i = 0; i < size; ++i)
{
if (obj.equals(linkCurr.getData()))
{
if (previous == null)
{
head = linkCurr.getNext(); // sets 2nd position to head of list
size--;
break;
}
previous.setNext(linkCurr.getNext()); // removes the node
size--;
break;
}
previous = linkCurr;
linkCurr = linkCurr.getNext();
}
}
linkCurr=head;
Link-previous=null;
if(head!=null){
对于(int i=0;i
问题似乎出现在代码的这一部分:
Link linkCurr = head;
if (head != null) {
for (int i = 0; i < size; ++i) {
if (obj.equals(linkCurr.getData())){
linkCurr.setNext(linkCurr.getNext().getNext());
size--;
break;
}
linkCurr = linkCurr.getNext();
}
}
linkCurr=head;
if(head!=null){
对于(int i=0;i
这是在列表中搜索与输入节点匹配的节点。然后,它将该节点的下一个链接设置为下线的节点2,删除相邻节点
您可能希望保留上一个节点的索引,并对其执行setnext,例如:
Link linkCurr = head;
Link previous = null;
if (head != null) {
for (int i = 0; i < size; ++i)
{
if (obj.equals(linkCurr.getData()))
{
if (previous == null)
{
head = linkCurr.getNext(); // sets 2nd position to head of list
size--;
break;
}
previous.setNext(linkCurr.getNext()); // removes the node
size--;
break;
}
previous = linkCurr;
linkCurr = linkCurr.getNext();
}
}
linkCurr=head;
Link-previous=null;
if(head!=null){
对于(int i=0;i
谢谢你,@Marshall Tigerus。你的字条很好,我非常感激。除最后一个元素外,它对所有元素都很有效。就像在我的示例中一样,task5没有被删除,而且大小甚至没有减少。这意味着,我猜,在这种情况下,如果我试图删除最后一个元素,它甚至不会输入if语句。尝试在for循环中将其更改为I++而不是++I,或者将其更改为I Yeah,已经找到了。你知道,修复尝试的残余。无论如何,非常感谢你,马歇尔。你帮了大忙。祝你好运谢谢你,马歇尔·蒂格罗斯。你的字条很好,我非常感激。除最后一个元素外,它对所有元素都很有效。就像在我的示例中一样,task5没有被删除,而且大小甚至没有减少。这意味着,我猜,在这种情况下,如果我试图删除最后一个元素,它甚至不会输入if语句。尝试在for循环中将其更改为I++而不是++I,或者将其更改为I Yeah,已经找到了。你知道,修复尝试的残余。无论如何,非常感谢你,马歇尔。你帮了大忙。祝你好运