资讯专栏INFORMATION COLUMN

用 JavaScript 实现链表操作 - 07 Append

jone5679 / 334人阅读

摘要:需求实现一个函数,把两个链表连接起来,并返回连接后的链表头结点。递归版本本身就可以作为递归的逻辑。实际上等于,直到递归到末尾,这时直接返回即可。代码如下参考资料的代码实现的测试

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 的测试

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81106.html

相关文章

  • JavaScript 实现链表操作 - 12 Front Back Split

    摘要:需求实现函数把链表居中切分成两个子链表一个前半部分,另一个后半部分。提示一个简单的做法是计算链表的长度,然后除以得出前半部分的长度,最后分割链表。最后用把数组转回链表。参考资料的代码实现的测试 TL;DR 把一个链表居中切分成两个,系列目录见 前言和目录 。 需求 实现函数 frontBackSplit() 把链表居中切分成两个子链表 -- 一个前半部分,另一个后半部分。如果节点数为奇...

    daryl 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表

    摘要:每个线性表上的数据最多只有前和后两个方向。数组链表队列栈等就是线性表结构。非线性表数据之间并不是简单的前后关系。不包含任何元素的栈称为空栈。移除栈顶的元素,同时返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度。 我们应该多掌握一些可移值的...

    kaka 评论0 收藏0
  • 学习JavaScript数据结构与算法(二):链表

    摘要:实现移除给定的元素要移除的元素返回值表示移除成功方法说明移除单向链表中某个位置的元素。的前端乐园原文链接寒假前端学习学习数据结构与算法二链表 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据结构与算法(三):集合第四篇文章:学习JavaScript数据结构与...

    lolomaco 评论0 收藏0
  • Javascript的数据结构与算法(一)

    摘要:对数组中的每一项运行给定函数,返回改函数会返回的项组成的数组。将所有的数组元素链接成一个字符串。数组合并方法可以向一个数组传递数组对象或是元素。通过栈实现对正整数的二进制转换。源码地址的数据结构与算法一源码 1数组 1.1方法列表 数组的常用方法如下: concat: 链接两个或者更多数据,并返回结果。 every: 对数组中的每一项运行给定的函数,如果该函数对每一项都返回true...

    VioletJack 评论0 收藏0
  • 学习数据结构与算法之链表

    摘要:本系列所有文章第一篇文章学习数据结构与算法之栈与队列第二篇文章学习数据结构与算法之链表第三篇文章学习数据结构与算法之集合第四篇文章学习数据结构与算法之字典和散列表第五篇文章学习数据结构与算法之二叉搜索树简单介绍链表链表一种常见的数据结构,可 本系列所有文章:第一篇文章:学习数据结构与算法之栈与队列第二篇文章:学习数据结构与算法之链表第三篇文章:学习数据结构与算法之集合第四篇文章:学习数...

    jerryloveemily 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<