📅  最后修改于: 2023-12-03 15:27:11.969000             🧑  作者: Mango
在 JavaScript 中,我们可以使用链表来表示数字,每个节点代表一个数字的一位。为了实现两个链表相加,我们需要从它们的头开始遍历,并使用变量来保存每一步的进位和值。
以下是添加两个链表的算法:
以下是 JavaScript 实现:
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let dummy = new ListNode(0);
let p = l1, q = l2, current = dummy;
let carry = 0;
while (p !== null || q !== null) {
let x = (p !== null) ? p.val : 0;
let y = (q !== null) ? q.val : 0;
let sum = carry + x + y;
carry = Math.floor(sum / 10);
current.next = new ListNode(sum % 10);
current = current.next;
if (p !== null) p = p.next;
if (q !== null) q = q.next;
}
if (carry > 0) {
current.next = new ListNode(carry);
}
return dummy.next;
};
该实现使用了 JavaScript 的基本类型和语法结构来创建链表、遍历列表并保存进位和值。