当前位置: 首页 > 知识库问答 >
问题:

为什么我们在单链表中把head设为null?

周睿范
2023-03-14

为什么当我们试图创建一个单链表时,我们在类中使头为NULL,而不是使下一个头为NULL。在与链表相关的函数中,为什么要将下一个节点设为Null而不设为Null?

共有1个答案

虞唯
2023-03-14

避免浪费。列表节点用于在其中存储元素。想象一下,如果您建议的场景中有一个空列表,*表示列表的开头。我们将从以下方面开始:

[*???]->NULL

哪里只是一个未使用元素的伪变量。我们已经浪费了一个列表节点,而我们可以简单地执行以下操作:

*NULL

同样,如果我们检查一个非空列表,我们可能会发现您的案例:

[*123]->[456]->[789]->[???]->NULL

... 当我们可以简单地:

[*123]->[456]->[789]->NULL

当然,当列表大小从0变为1时,您可以扩展它来覆盖这个虚拟变量,但是现在这涉及到额外的分支等等,我们最终会得到更复杂的指令和处理开销。

所以这样做真的没有什么好处,而且可能会损失很多。

在与链表相关的函数中,为什么要将下一个节点设为Null而不设为Null?

我不太明白这部分。例如,如果我们谈论的是向列表中插入一个新节点,我们可能会有这样的情况:

[new node: 456]->???      [*123]->NULL

然后我们让它指向头部:

[new node: 456]->[*123]->NULL

...然后把头指向新节点。

[*456]->[123]->NULL

因此,通常不应该将节点的下一个指针设置为null,除非它指向恰好为null的头部,或者是为了响应删除尾部。

 类似资料:
  • 本文向大家介绍为什么我们在HTML页面中使用head标签?,包括了为什么我们在HTML页面中使用head标签?的使用技巧和注意事项,需要的朋友参考一下 <head>标记是HTML页面中所有head元素的容器。要添加<head>…</ head>标签非常简单。在其下添加文档标题或元信息,样式,脚本等。 请记住,<title>…</ title>标签会添加到<head>…</ head>标签内。 示例

  • 以我的拙见,关于“什么是单子”这个著名问题的答案,尤其是投票最多的答案,试图解释什么是单子,而没有明确解释为什么单子是真正必要的。它们能被解释为一个问题的解决方案吗?

  • 我是Java初学者,目前正在完成有关DSA的Udemy课程。我正在学习链表,并且正在研究在链表中插入和删除节点的方法。 从我所学到的到目前为止,我知道我们使用条件来检查链接列表是否是空的。 如果条件为true,则LinkedList为空,否则它不为空。 然而,我们不应该检查是否,因为尾巴将始终引用LinkedList中的最后一个节点,即使我们使? 这是我的密码:

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都将数据插入到单个表中,并使用两个不同的类来做到这一点。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和hibernate关系。 问题答案: Hibernate 1中有两种对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以

  • 问题内容: 我将稍微解释一下我的脚本,以便您可以理解我的问题。 基本上我做了一个脚本来检查SOCKS5是还是。 当我在上面测试我的脚本时,它运行良好,但是当我在Windows上对其进行测试时,直到我将以下行添加到: 谁能向我解释为什么我在Windows中需要此行,而在Linux服务器上却不需要? 问题答案: SSL证书上的此cURL手册页介绍了连接到SSL / TLS受保护主机时 证书验证 的过程