两数相加

两数相加
思路:需要考虑三个值,第一个链表的值,第二个链表的值,两个链表相加之后的进位值
两数相加 
循环条件则为当两个表同时为空的时候才截至。
两数相加 
具体流程为:从l1和l2取出值,判断是否为空,为空给赋值上0,否则为其对应值,创建新链表,将l1和l2对应值分别赋值给v1、v2,用sum加上v1和v2的值和进位的值(一开始进位为0),然后对sum/10,将进位求出赋值,链表的元素则进行模10得出个位赋值,然后不断循环求出结果。最后要进行判断最后一次相加的结果是否大于10,把多出来的值进行进位连接
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    if(l1==null)return l2;
    if(l2==null)return l1;
    ListNode newHead=new ListNode(0);
    ListNode tail=newHead;
    int carry=0;
    while(l1!=null||l2!=null){
        int v1=0;
        if(l1!=null){
            v1=l1.val;
            l1=l1.next;
        }
        int v2=0;
        if(l2!=null){
            v2=l2.val;
            l2=l2.next;
        }
        int sum=v1+v2+carry;
        ListNode node=new ListNode(sum%10);
        tail.next=node;
        tail=tail.next;
        carry=sum/10;
    }
    // 检查最后的进位
    if (carry > 0) {
        // carry == 1
        tail.next = new ListNode(carry);
    }
 
    return newHead.next;
}