最初的思路是返回结果 这样在循环中最后会有一个多余的链表(0)无法删除,

之后返回结果的下一个链表 解决该问题 

在计算过程中 会存在连续进位的问题 比如输入[1]和[9,9,9]

最开始没有考虑到这种情况

之后使用进位数add放到while循环中解决

class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int add = 0;//进位
ListNode *res = new ListNode(0);//返回的结果的头
ListNode *ptr = res;//移动的指针
while(l1 || l2 || add) {//l1/l2共有的位置相加
int sum = add;
if(l1) sum += l1 -> val;
if(l2) sum += l2 -> val;
add = sum / 10;
ListNode *temp = new ListNode(sum % 10);
ptr -> next = temp;
ptr = ptr -> next;
if(l1)l1 = l1 -> next; //bug处 如果没有if会对空的list进行操作 程序崩溃
if(l2)l2 = l2 -> next;
}
return res -> next;
}
};

posted on 2017-10-09 16:41  bloomingFlower  阅读(139)  评论(0编辑  收藏  举报