用 JavaScript 实现链表操作 - 09 Move Node

发布时间:2019-06-11 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了用 JavaScript 实现链表操作 - 09 Move Node脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

TL;DR

把一个链表的首节点移到另一个链表。系列目录见 前言和目录

需求

实现一个 moveNode() 函数,把源链表的头节点移到目标链表。当源链表为空时函数应抛出异常。为了简化起见,我们会用一个 Context 对象来存储改变后的源链表和目标链表的引用。它也是函数的返回值。

var source = 1 -> 2 -> 3 -> null
var dest = 4 -> 5 -> 6 -> null
moveNode(source, dest).source === 2 -> 3 -> null
moveNode(source, dest).dest === 1 -> 4 -> 5 -> 6 -> null

这个 kata 是下一个 kata 的简化版,你可以重用 第一个 katapush 方法。

关于 Context

Context 的定义长这个样子,source 代表源链表,dest 代表目标链表。

function Context(source, dest) {
  this.source = source
  this.dest = dest
}

解法

配合 push ,这个 kata 非常简单,注意这个函数没有改变两个链表本身。代码如下:

function moveNode(source, dest) {
  if (!source) throw new Error('source is empty')
  return new Context(source.next, push(dest, source.data))
}

总结

这个 kata 本身很简单,就没有分递归和循环的版本了,其存在意义主要是为了下一个 kata 做铺垫。

算法相关的代码和测试我都放在 GitHub 上,如果对你有帮助请帮我点个赞!

参考资料

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

脚本宝典总结

以上是脚本宝典为你收集整理的用 JavaScript 实现链表操作 - 09 Move Node全部内容,希望文章能够帮你解决用 JavaScript 实现链表操作 - 09 Move Node所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: