给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。代码
时间: 2023-08-22 15:33:12 浏览: 81
下面是一个 Python 代码示例,实现了将两个逆序链表相加并返回一个新的链表的功能:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode:
carry = 0
dummy = ListNode(0)
current = dummy
while l1 or l2 or carry:
sum = carry
if l1:
sum += l1.val
l1 = l1.next
if l2:
sum += l2.val
l2 = l2.next
carry = sum // 10
current.next = ListNode(sum % 10)
current = current.next
return dummy.next
```
首先定义一个 ListNode 类表示链表的节点,包含 val 和 next 两个属性。然后定义一个函数 addTwoNumbers(),接收两个链表 l1 和 l2 作为输入参数,返回一个新的链表。
在函数内部,我们使用 carry 变量来保存进位信息,dummy 变量作为返回链表的哑节点。使用 current 变量来追踪链表中的当前节点。
接下来,我们使用 while 循环遍历链表,每次将 carry、l1 和 l2 中的对应位置的值相加,并计算新的进位值。将相加结果的个位数构建成新的节点并添加到返回链表的尾部。最后返回哑节点的下一个节点,即为相加后的链表。
使用示例:
```python
# 构造链表 l1 和 l2
l1 = ListNode(2, ListNode(4, ListNode(3)))
l2 = ListNode(5, ListNode(6, ListNode(4)))
# 相加
result = addTwoNumbers(l1, l2)
# 打印结果
current = result
while current:
print(current.val, end=' ')
current = current.next
# 输出: 7 0 8
```
上述代码实现了将两个逆序链表相加的功能,并返回一个新的链表。
阅读全文