我有学生对象的链接链接。它基本上是一个数据库,用于存储有关学生作为学生对象的数据。我唯一的问题是创建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--;
}
}
}
答案 0 :(得分:1)
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;
}
}
答案 1 :(得分:0)
如果当前包含要删除的对象,则需要获取对前一个节点的引用,并将其指向下一个节点。你有
A -> B -> C
和B包含要删除的项目,您希望链接列表看起来像
A -> C
您的代码存在一些问题
1)你没有做上述事 2)您没有在while循环中设置上一个。你可以在
之前做到这一点 current = current.getNext();
3)代码
LinearNode<Object> current = element;
在顶部,什么是element
?
答案 2 :(得分:0)
看起来element
是列表的头部。查看更改element
的代码并进行更改,以便在删除第二项时,element
仍然指向第一个element
,第一个元素指向第三个而不是第二个