反转两列表,然后从头加到尾
代码如下:

class Solution:
    def addInList(self , head1: ListNode, head2: ListNode) -> ListNode:
        p1 = self.reverseList(head1)
        p2 = self.reverseList(head2)
        head = None                     # 用于记录新链表的头结点
        
        i = 0                           # 记录进位
        while p1 or p2 or i > 0:
            if p1:
                i += p1.val
                p1 = p1.next
            if p2:
                i += p2.val
                p2 = p2.next
            
            temp = ListNode(i % 10)
            if not head:
                head = temp
                h = head                # 记录新链表的尾结点
            else:
                h.next = temp
                h = h.next
                
            i //= 10

        return self.reverseList(head)
        
        
    def reverseList(self, head) -> ListNode:    # 反转链表
        p = head
        head = None
        while p:
            q = p.next
            p.next = head
            head = p
            p = q
    
        return head