如何解决删除一个链接如何从链表中删除一个节点?
我正在阅读 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 节点仍然有指向它之后的节点的链接,为什么这会删除前一个 n.next 节点?我附上了帮助说明的插图。
提前致谢!
解决方法
- 在支持自动垃圾回收的语言/运行时中,此引用变量(
b
- 无法从任何活动的执行线程访问)引用的对象将被垃圾回收。 - 即使在这种情况下,也应注意正确关闭任何外部资源(例如 - 有人将存储在
b
引用的对象中的值分配给他们的静态引用)。 - 在没有自动垃圾回收的运行时,释放资源是开发者的责任。
当我们使用 Java 编码时,包含 b 值的节点将被 Java 虚拟机 (JVM) 中的垃圾收集器 (GC) 删除。但是对于 C 语言,你应该使用 free() 函数销毁这个节点。 这是在 C 中创建和销毁一个节点的示例(我们假设“结构节点”已经定义):
n = malloc(sizeof(struct node));
free(n);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。