题意:
        假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
        给定两个这种链表,请生成代表两个整数相加值的结果链表。
方法:
模拟

思路:
        首先,反转给定的两个链表,使之右对齐;
        然后,初始化双指针遍历链表相加,并得到结果链表;
        最后,将结果链表反转即可。

        

class Solution {
public:
    
    ListNode* addInList(ListNode* head1, ListNode* head2) {
        head1=reverseList(head1);//反转链表
        head2=reverseList(head2);
        
        ListNode *p=head1,*q=head2;//初始化
        ListNode *head=nullptr,*tail,*t;
        int flag=0;//进位标志
        while(p||q){
            //加法
            int temp=flag;
            if(p){
                temp+=p->val;
                p=p->next;
            }
            if(q){
                temp+=q->val;
                q=q->next;
            }
            if(temp>9){//判断进位
                flag=1;
                temp%=10;
            }else{
                flag=0;
            }
            t=new ListNode(temp);//新建节点
            if(head==nullptr){//插入节点
                head=t;
            }else{
                tail->next=t;
            }
            tail=t;
        }
        if(flag){//最后判断进位
            t=new ListNode(1);
            if(head==nullptr){
                head=t;
            }else{
                tail->next=t;
            }
            tail=t;
        }
        return reverseList(head);//反转答案链表
    }
    
    ListNode* reverseList(ListNode* head){//反转链表
        if(head==nullptr)
            return head;
        ListNode *p=head,*q=head->next,*t;//初始化
        p->next=nullptr;
        while(q){//反转操作
            t=q->next;
            q->next=p;
            p=q;
            q=t;
        }
        return p;
    }
};

时间复杂度:
空间复杂度: