我是靠谱客的博主 笑点低老鼠,最近开发中收集的这篇文章主要介绍js实现链表操作,计算两个链表对应数之和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在网上看到一道题,题目如下:

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

大多数都是通过java来实现的,js我也是第一回用来写链表,下边是代码实现,不正之处,请指正:

// 构建链表数据结构对象
function ListNode (val) {
this.val = val
this.next = null
}
// 计算两个链表之和的方法
function addTwoNumbers(l1, l2) {
let x1 = 0
let x2 = 0
x1 = (x2 + l1.val + l2.val) % 10
x2 = Math.floor((x2 + l1.val + l2.val) / 10)
let l3 = new ListNode(x1)
l1 = l1.next
l2 = l2.next
while (l1 || l2) {
if (!l1) {
l1 = new ListNode(0)
}
if (!l2) {
l2 = new ListNode(0)
}
x1 = (x2 + l1.val + l2.val) % 10
x2 = Math.floor((x2 + l1.val + l2.val) / 10)
let l4 = new ListNode(x1)
let l5 = l3
while (l5.next) {
l5 = l5.next
}
l5.next = l4
l1 = l1.next
l2 = l2.next
}
if (!l1 && !l2) {
if (x2 !== 0) {
let l6 = new ListNode(x2)
let l7 = l3
while (l7.next) {
l7 = l7.next
}
l7.next = l6
}
}
return l3
}
// 测试函数
(function test() {
// 构建第一个节点
let l1 = new ListNode(2)
let l1x = new ListNode(4)
let l1y = new ListNode(3)
l1.next = l1x
l1x.next = l1y
console.log(l1.next.next.val)
// 构建第二个节点
let l2 = new ListNode(5)
let l2x = new ListNode(6)
let l2y = new ListNode(4)
l2.next = l2x
l2x.next = l2y
console.log(l2.next.next.val)
addTwoNumbers(l1, l2)
})()

链表作为一种数据结构,在前端使用的的确是很少,但是作为一名全栈程序员,还是应该略懂其原理,最好可以亲自实现一遍

最后

以上就是笑点低老鼠为你收集整理的js实现链表操作,计算两个链表对应数之和的全部内容,希望文章能够帮你解决js实现链表操作,计算两个链表对应数之和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部