class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addTwoNumbers(l1, l2):
flag = False
re = []
while l1 and l2:
add = l1.val + l2.val
# 如果当前要进位加1
if flag:
add += 1
if add>10 or add==10:
add = add % 10
re.append(add)
add = int(add/10)
flag = True
else:
flag = False
re.append(add)
l1 = l1.next
l2 = l2.next
while l1:
add = l1.val
if flag:
add = 1 + l1.val
if add>10 or add==10:
add = add % 10
re.append(add)
add = int(add/10)
flag = True
else:
flag = False
re.append(add)
l1 = l1.next
while l2:
add = l2.val
if flag:
add = 1 + l2.val
if add > 10 or add == 10:
add = add % 10
re.append(add)
add = int(add / 10)
flag = True
else:
flag = False
re.append(add)
l2 = l2.next
if flag:
re.append(1)
result = ListNode()
point = result
for i in range(len(re)):
result.val = re[i]
if i!=len(re)-1:
result.next = ListNode(val=re[i])
result = result.next
return point
if __name__=="__main__":
lst = [9,9,9,9,9,9,9] # lst = [2,4,3] # lst = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
l1 = ListNode(val=lst[0])
p1 = l1
for i in range(len(lst)-1):
node = ListNode(val=lst[i+1])
l1.next = node
l1 = l1.next
lst2 = [9,9,9,9] # lst2 = [5,6,4]
l2 = ListNode()
p2 = l2
for i in range(len(lst2)):
l2.val = lst2[i]
if i != len(lst2)-1:
l2.next = ListNode()
l2 = l2.next
p = addTwoNumbers(p1,p2)
see = []
while p:
see.append(p.val)
p = p.next
print(see)