Java 如何从链接列表中删除节点?
我有一个学生对象的链接。它基本上是一个数据库,将学生的数据存储为学生对象。我遇到的唯一问题是创建Java 如何从链接列表中删除节点?,java,linked-list,Java,Linked List,我有一个学生对象的链接。它基本上是一个数据库,将学生的数据存储为学生对象。我遇到的唯一问题是创建removeStudent方法。下面的帖子是我到目前为止所做的尝试,修改它的不同部分,看看是否会出现不同的结果。现在有了这段代码,我可以在我的驱动程序中删除一个学生,但它也会删除我想要删除的学生之前的每个学生,只留下数据库中我试图删除的学生之后的学生 public void RemoveElements(Object Student) { LinearNode<Object> c
removeStudent
方法。下面的帖子是我到目前为止所做的尝试,修改它的不同部分,看看是否会出现不同的结果。现在有了这段代码,我可以在我的驱动程序中删除一个学生,但它也会删除我想要删除的学生之前的每个学生,只留下数据库中我试图删除的学生之后的学生
public void RemoveElements(Object Student) {
LinearNode<Object> current = element;
LinearNode<Object> temp = current;
while (current.getNext() != null) {
temp = current;
current = current.getNext();
if(current.getElement() == Student) {
temp.setNext(current.getNext());
length--;
}
}
}
public void removeements(对象学生){
线性节点电流=元件;
线性节点温度=电流;
while(current.getNext()!=null){
温度=电流;
current=current.getNext();
if(current.getElement()==学生){
temp.setNext(current.getNext());
长度--;
}
}
}
如果当前包含要删除的对象,则需要获取对上一个节点的引用,并将其指向下一个节点。你有吗
A->B->C
如果B包含要删除的项,则您希望您的链接列表如下所示
A->C
您的代码有几处错误
1) 您没有执行上述操作2) 您没有在while循环中设置previous。你可以早一点做
current=current.getNext()代码>
3) 对于代码
LinearNode电流=元件代码>
在顶部,什么是元素
?公共无效删除元素(对象学生){
public void RemoveElements(Object Student) {
LinearNode<Object> current = element;
LinearNode<Object> previous = null;
//LinearNode<Object>(student);
while (current.getNext() != null) {
current = current.getNext();
if(current.getElement() == Student) {
length--;
element = element.getNext();
if (previous != null) {
previous.setNext(element.getNext();
} else {
//if you have a pointer to the head element place it element.getNext();
}
}
previous = current;
}
}
线性节点电流=元件;
LinearNode previous=null;
//线性节点(学生);
while(current.getNext()!=null){
current=current.getNext();
if(current.getElement()==学生){
长度--;
element=element.getNext();
如果(上一个!=null){
previous.setNext(element.getNext();
}否则{
//如果有指向head元素的指针,请将其放置在element.getNext()中;
}
}
先前=当前;
}
}
看起来元素
是列表的最前面。查看更改元素
的代码,并对其进行更改,以便在删除第二项时,元素
仍然指向第一个元素
,第一个元素指向第三个而不是第二个。不要为别人做作业。指南让他们理解。我也没有检查列表的末尾,所以这不会完全起作用,但有一点很好。+1因为没有做其他人的家庭作业。代码比盲目添加到项目中更好理解。他在问题标题中“隐藏它”:如何从链接列表中删除节点(搜索5分钟后找到)我明白了。我取消了对previous.setNext字符串的注释,并将previous设置为current。它现在可以工作了。无论如何,谢谢。loli还将LinearNode previous更改为temp,因为这样似乎更有意义。元素是列表的开头。