BM11 链表相加(二) python代码实现
时间: 2024-11-01 12:07:05 浏览: 5
Python 实现链表实例代码
BM11链表相加指的是将两个给定的非空链表按照节点数值进行逐位相加,并考虑进位的过程。这里是一个Python代码示例,它假设链表节点包含整数值:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0) # 创建虚拟头节点
carry = 0
current = dummy # 当前节点指向dummy
while l1 is not None or l2 is not None:
# 计算当前节点的和及其进位
sum_val = carry + (l1.val if l1 else 0) + (l2.val if l2 else 0)
# 更新当前节点的值和指针
current.next = ListNode(sum_val % 10)
carry = sum_val // 10
current = current.next
# 移动输入链表的指针
if l1 is not None:
l1 = l1.next
if l2 is not None:
l2 = l2.next
# 如果有进位,需要在链表末尾添加一个表示进位的新节点
if carry > 0:
current.next = ListNode(carry)
return dummy.next # 返回实际结果链表的头节点
# 示例:
l1 = ListNode(2, ListNode(4, ListNode(3)))
l2 = ListNode(5, ListNode(6, ListNode(4)))
result = addTwoNumbers(l1, l2)
while result is not None:
print(result.val, end=" ")
result = result.next
# 输出: 7 0 8
```
这个函数会计算两个链表的和,并返回一个新的链表,其中每个节点的值都是对应位置上两个输入链表节点值之和的结果。
阅读全文