图书图片1图书图片
我从基本的linkedlist操作开始。
这是一个在linkedlist的开始或特定位置插入新节点的程序。
我知道第一张图片的情况是,如果链表为空,则插入并返回新节点。
问题(我知道这是愚蠢的):如果我们在上面提到的每一个案例/块中都返回了一个节点,为什么我们在最后返回HeadNode
?它不应该在最后一个块内返回,而不是在外面?
是否返回HeadNode
之前或之后的其他
-块的关闭大括号只是一个编码风格的问题。它不会改变结果。
我同意从else
-块返回会更加一致。
在java中,没有任何理由不将返回语句移到elle
-block中。如果您忘记从其中一个分支返回,编译器将产生错误,没问题。书中所示的风格可能是从一种语言中继承下来的,在这种语言中,“从非无效函数的边缘脱落”会默默地导致严重的问题,比如(旧版本的)C。
另一种旨在“消除混乱”的可能方式是,如果每个if
分支返回,则完全忽略else
s。例如,请看这个问题,尽管它是关于JS的,而不是关于Java的。
我们将返回所有4种情况下的头节点。头节点总是链表中的第一个节点。
案例1:-当链表为空时,创建一个新节点并返回它。因为只有一个节点,所以返回的节点是head节点。
案例2:-如果插入位置无效,我们返回头部节点。
在案例3中:-当插入位置位于开始位置时,我们将新节点的下一个设置为当前头部,并返回新节点,该节点现在是我们的新头部节点,因为它位于开始位置。
案例4:-当我们在特定位置插入时,在插入和更改链接后,我们再次返回头部节点。
要理解为什么我们总是返回头节点,请阅读以下内容-
方法签名-
ListNode insert(ListNode NewNode , int position)
现在,这个方法的职责是只在特定位置插入节点,并始终将头部节点提供给这个方法的调用方。这样调用者就可以从头到尾遍历链表。
假设有一个包含10个节点的链表,如果在链表的末尾插入新节点,并返回新节点,而不是头节点。现在调用者不能返回链表,因为节点总是指向下一个节点,所以调用者会认为链表只包含1个节点。
我需要帮助我的错误就像 代码:
问题内容: 我刚读 ISO / IEC 9899:201x委员会草案-2011年4月12日 在其中我发现5.1.2.2.3程序终止 这表示如果您未在中指定任何return语句,并且如果程序成功运行,则main的右大括号}将返回0。 但是在下面的代码中,我没有指定任何return语句,但是它没有返回0 编译 问题答案: 该规则是在C标准的1999版本中添加的。在C90中,返回的状态未定义。 您可以通
问题内容: 我只是想要一些有关此的信息。 什么是在的结尾文字呢?这叫什么?为什么使用它? 问题答案: 在表明它是一个浮点文字,不是双字面它并没有一个特定的技术名称,我知道(这将暗示以其它方式) -我倾向于把它称为“字母后缀”如果我需要参考具体来说,尽管有点武断! 例如: 您当然可以: …几乎可以完成同一件事,但是F是一种更简洁,更简洁的表示方式。 为什么选择double作为默认值而不是float?
在这个打印从1到10000000的所有数字、Haskell版本和C版本的简单程序中,为什么Haskell版本如此缓慢,以及哪些命令有助于学习如何提高Haskell程序的性能? 下面是一份报告,包含重现我激动人心的事件所需的所有细节,制作报告时会打印出来源,包括Makefile的来源:
问题内容: 我知道这个问题被问过很多次,但是我没有找到答案。那么,为什么建议在body标签的末尾添加脚本以更好地渲染呢? 从Udacity课程和CSSOM准备就绪后开始渲染。JS是HTML解析阻止程序,并且CSSOM准备好后,任何脚本都会启动。 因此,如果我们得到: CRP为: 如果脚本在头: CRP将相同: 这个问题仅与“同步”脚本有关(没有async / defer属性)。 问题答案: 从历史
我在构建递归函数时继续遇到一个问题,其中返回的值与我期望返回的值不同。我很确定这与函数的递归性质有关,但我不知道发生了什么。 在这个缩小的例子中,我有一个带有字符串的函数foo和一个默认值为0的int。给定字符串“测试”并且没有整数,我希望递归函数为每个调用增加numberToBack并将新值传递给下一个调用。这一定是部分正确的,因为如果我在到达基本情况时cout numberToBack,我将获