gpt4 book ai didi

java - java从链表中删除多个节点

转载 作者:行者123 更新时间:2023-12-02 03:43:22 26 4
gpt4 key购买 nike

我正在尝试从链接列表中删除满足条件的多个节点。该程序有点复杂,所以我会说明它的要点。我的链表中的节点具有以下特征(名称与数字相关联):

Name Number
Dog 1
Cat 1
Rat 2
Donkey 3
Fish 1

我希望能够删除编号为1的节点。我的删除函数:

public void Delete(Int N) {

Node current = Head;
Node previous = Head;


while (current.getNum() != N) {

if (current.getNextNode() == null) {

System.out.print("Not found");

} else {

previous = current;

current = current.getNextNode();

}

}

if (current == Head) {

Head = Head.getNextNode();

} else {

Node A = current.getNextNode();
previous.setNextNode(A);

}

}

这有效,但它只删除第一次出现的情况。我知道这可能是由于缺乏或适当的循环结构造成的,但我已经为此工作了几个小时,而且一路上我感到很困惑。我尝试过手动创建跟踪表,但这也不起作用。

如何编辑该函数,使其循环遍历整个链表并删除符合条件的节点?

最佳答案

这应该从链接列表中删除匹配的Node实例:

public void delete(int n) {

int count = 0;

Node prev = null, next;
for (Node current = head; current != null; current = next) {
next = current.getNextNode();
if (current.getNum() == n) {
count++;
if (prev != null) {
prev.setNextNode(next);
} else {
head = next;
}
} else {
prev = current;
}
}

System.out.print(count > 0 ? ("Number deleted: " + count) : "Not found");
}

关于java - java从链表中删除多个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587186/

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