题目如下:
通过该题目学习了链表
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode):
"""
:type l1: ListNode
:type l2: ListNode
"""
if l1 is None: #如果有一个链表为空,则返回另一个
return l2
if l2 is None:
return l1
tmp=ListNode(0) #tmp是暂存变量
res=tmp #res是结果变量,是返回的最终结果
flag=0 #flag是进位,两个链表相加会产生进位
while l1 or l2: #当l1和l2不都为空时,两个链表相加
tmp_sum=0 #tmp_sum是两个链表中对应单个结点的和值
if l1: #如果l1不空,就把l1的某个结点值赋给tmp_sum
tmp_sum=l1.val #l1.val是l1某个结点的值,用.val后缀表示
l1=l1.next #运算完成后指针指向下一个结点
if l2:
tmp_sum+=l2.val
l2=l2.next
tmp_res=(tmp_sum+flag)%10 #%表示两数相除的余数,即个位数字
flag= (tmp_sum+flag)//10 #//表示两数相除的整除部分的值,即进位数字
res.next=ListNode(tmp_res)
res=res.next #res指针后移
if flag: #如果flag不为0
res.next=ListNode(1) #res下一结点设为1
res=tmp.next
del tmp #删除tmp的值
return res
l1和l2的后缀.next和.val分别表示指针指向下一个的位置和结点表示的值