/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode preHead(0), *p = &preHead;
int extra = 0;
while (l1 || l2 || extra) {
int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;
extra = sum / 10;
p->next = new ListNode(sum % 10);
p = p->next;
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
return preHead.next;
}
};
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *preHead = (struct ListNode *)malloc(sizeof(struct ListNode));
preHead->val = 0;
struct ListNode *p = NULL;
int extra = 0;
while (l1 || l2 || extra) {
if(p == NULL)
{
p=preHead;
}
else
{
p->next=(struct ListNode*)malloc(sizeof(struct ListNode)); //这里写成p会出错
p->next->val=0;
p=p->next;
}
int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + extra;
extra = sum / 10;
p->val = sum % 10;
p->next=NULL;//不能开始就p=p->next;没分配内存会报错
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
return preHead;
}