给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是十位数...),求这个两个数的和,结果也用链表表示。
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
  * 
  * @param l1 ListNode类 
  * @param l2 ListNode类 
  * @return ListNode类
  */
function addTwoNumbers( l1 ,  l2 ) {
    // write code here
    if(l1==null) {return l2}
    if(l2==null) {return l1}
    var newList = {}
    var head = newList
    var flag = false
    var cur1 = l1
    var cur2 = l2
    while(cur1&&cur2){
        var num = cur1.val + cur2.val
        if(flag){
            num += 1
            flag = false
        }
        if(num>=10){
            num %= 10
            flag = true
        }
        var newNode = new ListNode(num)
        head.next = newNode
        head = head.next
        cur1 = cur1.next
        cur2 = cur2.next
    }
    while(cur1){
        var num = cur1.val
        if(flag){
            num +=1
            flag = false
        }
        var newNode = new ListNode(num)
        head.next = newNode
        head = head.next
        cur1 = cur1.next
    }
    while(cur2){
        var num = cur2.val
        if(flag){
            num +=1
            flag = false
        }
        var newNode = new ListNode(num)
        head.next = newNode
        head = head.next
        cur2 = cur2.next
    }
    if(flag){
        var newNode = new ListNode(1)
        head.next = newNode
    }
    return newList.next
}
module.exports = {
    addTwoNumbers : addTwoNumbers
};