gpt4 book ai didi

java - 当您只能访问节点时,如何删除链表中的节点

转载 作者:行者123 更新时间:2023-11-30 08:31:49 25 4
gpt4 key购买 nike

我的理解是,为了删除单链表中的节点,我们需要访问当前节点和前一个节点。我有以下逻辑:

public SingleNode delete(int val) {

SingleNode current = head;
SingleNode prev = head;

while(current.data != val) {

if (current.next == null) {
return null;
} else {
prev = current;
current = current.next;
}

}

if(current == head) {
head = current.next;
} else {
prev.next = current.next;
}

return current;

}

如何更改代码,以便在您只能访问当前节点时删除链表中的节点?

最佳答案

How can I change the code so that I can delete a node in linked list when you are given access to only the current node?

对于单链表,您不能删除具有给定引用的节点,除非您要么前一个节点,或者您可以访问列表的头部.

如果你有头,你可以在 O(N) 步中找到前一个节点。

有一种通过修改节点来删除节点的方法在大多数情况下都有效,但有各种边缘情况会使其变得困难。 (如果你需要支持并发删除和迭代等,它肯定不会工作。)

关于java - 当您只能访问节点时,如何删除链表中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40455677/

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