/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
var ret = new ListNode(), //需要返回的那个单链表
p = ret, //移动的那个指针
c = 0; //进位,开始设置为0
while(l1 || l2){
var n1 = 0,
n2 = 0;
if(l1){ n1 = l1.val;l1 = l1.next;}
if(l2){ n2 = l2.val;l2 = l2.next;}
var tmp = n1+n2+c;
c = 0;
if(tmp > 9){
tmp -= 10 ;
c= 1 ;
}
p.val = tmp;
p.next = new ListNode();
var tmp2 = p; //为了计算最后那个进位
p = p.next; //指针后移,每次后移的时候已经创建了新的node结点。
}
if(c === 1){ p.val = 1; } //还有个进位的话,p此时val指向1
else { tmp2.next = null;} //无进位了,末尾节点是tmp2,将它的next置为空
return ret;
};
注意:最后的那个tmp2操作,开始搞错了。