leetcode_add two numbers
2018-12-17 本文已影响10人
CodeRambler
题目
解题
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
int carry = 0;
struct ListNode * ans = (struct ListNode *) malloc(sizeof(struct ListNode));
struct ListNode * q = (struct ListNode *) malloc(sizeof(struct ListNode)); // 移位指针
ans->next = NULL; // 链表的最后一个节点为NULL,否则遍历的时候会出现野指针
q = ans;
while(l1 || l2 || carry)
{
struct ListNode * p = (struct ListNode *) malloc(sizeof(struct ListNode));
p->val = ((l1 ? l1->val:0) + (l2 ? l2->val:0) + carry) % 10;
carry = ((l1 ? l1->val:0) + (l2 ? l2->val:0) + carry) / 10;
p->next = q->next;
q->next = p;
q = q->next;
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
ans = ans->next;
return ans;
}