链表操作中,如何实现两个数相加?

2026-05-22 11:161阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计408个文字,预计阅读时间需要2分钟。

链表操作中,如何实现两个数相加?

题目:非空链表相加给你两个非空的链表,表示两个非负的整数。它们各自的位数是按照逆序存储的,并且它们的每个节点只能存储一位数字(0-9)。请将这两个数相加,并以相同的形式返回一个链表。

示例:输入:(2 -> 4 -> 3)+(5 -> 6 -> 4)输出:7 -> 0 -> 8解释:342 + 465=807。

一、题目

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字(0-9)。

请你将两个数相加,并以相同形式返回一个表示和的链表。

链表操作中,如何实现两个数相加?

二、思路

1.生成一个虚拟dummy头节点

2.链表中节点的值:sum%10

3.进位标志flag:sum/10

三、程序实现

var addTwoNumbers = function(l1, l2) { let flag=0 //标志位 let dummy=new ListNode();//创建一个虚拟头节点 //遍历指针 let curr=dummy //循环遍历 while(l1!==null || l2!==null){ let sum=0; let a=0,b=0 if(l1!==null){ a=l1.val; //记录l1当前节点的值 l1=l1.next; } if(l2!==null){ b=l2.val //记录l2当前节点的值 l2=l2.next } sum=a+b+flag; //计算两数之和 curr.next=new ListNode(sum%10); //直接创建节点然后赋值 flag=Math.floor(sum/10); //指针进1 curr=curr.next } //如果最后的节点元素相加还需要进位,生成一个新节点且值为flag if(flag>0){ curr.next=new ListNode(flag); } return dummy.next };

本文共计408个文字,预计阅读时间需要2分钟。

链表操作中,如何实现两个数相加?

题目:非空链表相加给你两个非空的链表,表示两个非负的整数。它们各自的位数是按照逆序存储的,并且它们的每个节点只能存储一位数字(0-9)。请将这两个数相加,并以相同的形式返回一个链表。

示例:输入:(2 -> 4 -> 3)+(5 -> 6 -> 4)输出:7 -> 0 -> 8解释:342 + 465=807。

一、题目

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字(0-9)。

请你将两个数相加,并以相同形式返回一个表示和的链表。

链表操作中,如何实现两个数相加?

二、思路

1.生成一个虚拟dummy头节点

2.链表中节点的值:sum%10

3.进位标志flag:sum/10

三、程序实现

var addTwoNumbers = function(l1, l2) { let flag=0 //标志位 let dummy=new ListNode();//创建一个虚拟头节点 //遍历指针 let curr=dummy //循环遍历 while(l1!==null || l2!==null){ let sum=0; let a=0,b=0 if(l1!==null){ a=l1.val; //记录l1当前节点的值 l1=l1.next; } if(l2!==null){ b=l2.val //记录l2当前节点的值 l2=l2.next } sum=a+b+flag; //计算两数之和 curr.next=new ListNode(sum%10); //直接创建节点然后赋值 flag=Math.floor(sum/10); //指针进1 curr=curr.next } //如果最后的节点元素相加还需要进位,生成一个新节点且值为flag if(flag>0){ curr.next=new ListNode(flag); } return dummy.next };