脚本宝典收集整理的这篇文章主要介绍了

用 JavaScript 实现链表操作 – 07 Append

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

TL;DR

把一个链表连接到另一个链表的末尾。系列目录见 前言和目录

需求

实现一个 append() 函数,把两个链表连接起来,并返回连接后的链表头结点。

var listA = 1 -> 2 -> 3 -> null
var listB = 4 -> 5 -> 6 -> null
append(listA, listB) === 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null

如果两个链表都是 null 就返回 null ,如果其中一个是 null 就返回另一个链表。

递归版本

append 本身就可以作为递归的逻辑。append(listA, listB) 实际上等于 listA.next = append(listA.next, listB) ,直到 listA 递归到末尾 null ,这时 append(null, listB) 直接返回 listB 即可。加上边界条件判断,代码如下:

function append(listA, listB) {
  if (!listA) return listB
  if (!listB) return listA

  listA.next = append(listA.next, listB)
  return listA
}

循环版本

循环的思路是,在 listAlistB 都不为空的情况下,先找到 listA 的尾节点,假设为 node ,然后 node.next = listB 即可。代码如下:

function appendV2(listA, listB) {
  if (!listA) return listB
  if (!listB) return listA

  let node = listA
  while (node.next) node = node.next

  node.next = listB
  return listA
}

参考资料

Codewars Kata
GitHub 的代码实现
GitHub 的测试

总结

以上是脚本宝典为你收集整理的

用 JavaScript 实现链表操作 – 07 Append

全部内容,希望文章能够帮你解决

用 JavaScript 实现链表操作 – 07 Append

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过