删除一个 link 如何从 linked 列表中删除一个节点?

How does removing one link delete a node from a linked list?

我正在通读 Crashing the Coding Interview 一书中的代码,当他们删除第 93 页中的一个节点时,这是他们使用的代码片段:

Node deleteNode(Node head, int d){ 

while (n.next != null) {

if (n.next.data == d){
  n.next == n.next.next;
  return head;
  }

return head;
  }
}

我不明白的是,如果前一个 n.next 节点仍然有一个 link 到它后面的节点,为什么这会删除前一个 n.next 节点?我附上插图帮助解释。

提前致谢!

  1. 在 languages/runtime 支持自动垃圾收集的情况下,此引用变量引用的对象(b - 无法从任何活动执行线程到达)将被垃圾收集。
  2. 即使在这种情况下,也应注意正确关闭任何外部资源(例如 - 有人将存储在 b 引用的对象中的值分配给他们的静态引用)。
  3. 在没有自动垃圾收集的运行时,开发人员有责任释放资源。

当我们使用 Java 编码时,包含 b 值的节点将被 Java 虚拟机 (JVM) 中的垃圾收集器 (GC) 删除。但是对于 C 语言,您应该使用 free() 函数销毁此节点。 这是在 C 中创建和销毁一个节点的示例(我们假设已经定义了“struct node”):

n = malloc(sizeof(struct node));
free(n);