java - 从链表中删除节点

标签 java linked-list

我正在尝试从链接列表中删除给定的节点。我不知道为什么我的代码不起作用。有什么提示吗? 所以我有 [11,21,31,41],他们要求我删除索引 2 处的节点,在本例中为 31。到目前为止,我有这个:

public void delete (int k) {
    //[ 11 21 31 41 ].delete( 2 ): expected=[ 11 21 41 ]
    if (k < 0 || k >= N) throw new IllegalArgumentException ();

    for(Node x = first; x != null; x = x.next) {
        //deletes node
        if(x.item == k){
            x = x.next;
        }
        if(x.item <= k){
            x = x.next.next;
        }
    }


}

有人可以告诉我为什么这不起作用吗?谢谢

最佳答案

您可以使用接下来的 k 次来移动节点。存储一个临时 int 和前一个节点。每次调用 next() 时都会递减临时 int。到达 0(所需元素)后,通过将前一个节点的下一个指针设置为 x 的下一个指针来删除,然后将 x 设置为 null

我认为在您的代码中您缺少设置指针的部分。

例如:

(1) -> (2) -> (3)

要删除 (2),请设置 (1).next = (3)(2) = null。这将得到:

(1) -> (3)

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

相关文章:

java - Gson LinkedTree 映射无法转换为 InformativeItemProvider

java - JUnit @Ignore 的 Sonarqube 规则

java - 如何在 primefaces webapp 中设置字符集?

java - Jenkins 中的 Gradle 项目依赖错误

c - 两个链表的合并功能不起作用

c - 链表内的链表 : failing to retrieve values

java - ASCII 到 Hex-Java

c - 将文件中的信息加载到c中的列表中

c - 为什么我的 C 循环双端队列程序无法退出打印功能?

c++ - 声明对象