gpt4 book ai didi

java - 从 java LL 中删除特定项目

转载 作者:行者123 更新时间:2023-12-01 13:54:41 24 4
gpt4 key购买 nike

所以我试图从java中的链接列表中删除一个项目。我没有使用java的预定义LL,但我正在使用我自己的。

我知道删除一项的概念就是在链接中遍历,并逐一比较列表中的数据。

这就是我想出的办法,但它不起作用!

public void delStudent(int regN) {
Node current = head;
Node q = head;

if (current.getStudent().getRegN() == regN) {
head = head.link;
}
for (int i = 0; i < this.length() - 1; i++) {
if (current.getStudent().getRegN() != regN) {
current = current.link;
q = current;
}
}
q.link= current.link.link;

}

最佳答案

好吧,如果你的列表为空,则执行开头的 if 语句将立即给出 NullPointerException (因为 current 将为 null)。一般来说,对于LinkedList的删除方法,必须考虑三种情况:size == 0、size == 1、size > 1(其中size为Linked List中的节点数)。

public void delStudent(int regN) {
Node current = head;
Node previous = head;
while (current != null ){ // keep traversing till end of list
if (current.getStudent().getRegN() == regN) { // found it!
previous.link = current.link; // relink
if (current == head){ // edge case : removed first element
head = current.link; // move head forward.
}
break;
} else {
previous = current;
current = current.link;
}
}
}

上面的代码假设 regN 是唯一的,并且只有一名学生拥有该 regN。希望这会有所帮助。

关于java - 从 java LL 中删除特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19683556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com