链接

https://leetcode-cn.com/problems/add-two-numbers/

思路

1:采用头部哑结点,While循环里面表示什么时候会触发新增节点呢?
2:至少l1节点不为空,至少l2 节点不为空
3:最后一位需要触发进位,也就是X!=0(x=1)的时候
4: 如果一个节点为空,一个不为空,那该节点就补0
5:如果已经是最后一个节点就没有必要向下指该指针了。

代码

 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummyHead = new ListNode(-1);
        ListNode p = dummyHead;
        //是否需要进一位
        int x = 0;
        while( l1 != null || l2 != null || x != 0){
            int l1Val = 0;
            if(l1 != null){
                l1Val = l1.val;
            }
            int l2Val = 0;
            if(l2 != null){
                l2Val = l2.val;
            }
            int sum = l1Val + l2Val + x;
            x = sum / 10;

            ListNode node = new ListNode(sum % 10);
            p.next = node;
            p = node;
            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next; 
        }
        return dummyHead.next;
    }