小知识
链表的初始化
法一:ListNode* res = new ListNode(0);//正确用法
法二:ListNode haha(0); ListNode* res = haha;
注意以下初始化是不对的
ListNode* res(0);
源码
#include<iostream>
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* res = new ListNode(0);
ListNode* head = res;
int flag = 0;
int tempsum = 0;
while (l1 || l2) {
if (l1 && !l2) tempsum = l1->val + flag;
else if (!l1&&l2) tempsum = l2->val + flag;
else {
tempsum = l1->val + l2->val + flag;
}
if (tempsum < 10) {
res->next = new ListNode(tempsum);
res = res->next;
flag = 0;
}
else
{
res->next = new ListNode(tempsum%10);
res = res->next;
flag = 1;
}
if(l1&&!l2) l1 = l1->next;
else if(!l1&&l2) l2 = l2->next;
else {
l1 = l1->next;
l2 = l2->next;
}
}
if (flag == 1) {
res->next= new ListNode(1);
}
return head->next;
}
};
后感
激动,终于独立写出来了一个题目。。。