用 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 }
循环版本
循环的思路是,在 listA
和 listB
都不为空的情况下,先找到 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 }
参考资料
相关推荐
koushr 2020-11-12
范范 2020-10-28
zhaochen00 2020-10-13
Mars的自语 2020-09-27
steeven 2020-09-18
kka 2020-09-14
qiangde 2020-09-13
聚沙成塔积水成渊 2020-08-16
earthhouge 2020-08-15
aanndd 2020-08-12
范范 2020-07-30
bluetears 2020-07-28
mingyunxiaohai 2020-07-19
horizonheart 2020-07-19
liushall 2020-07-18
bluetears 2020-07-05
fengshantao 2020-07-02
liuweixiao0 2020-06-27