链表的应用
题目的思路很简单,通过建立一条新的链表用来存放两数相加的结果。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode *p1 = l1, *p2 = l2;
struct ListNode *ans = (struct ListNode *)malloc(sizeof(struct ListNode));
struct ListNode *add = ans;
int flag = 0;
while(p1 || p2 || flag > 0){
struct ListNode *num = (struct ListNode *)malloc(sizeof(struct ListNode));
int x1 = p1 == NULL ? 0 : p1->val;
int x2 = p2 == NULL ? 0 : p2->val;
num->val = (x1 + x2 + flag) % 10;
flag = (x1 + x2 + flag) / 10;
num->next = NULL;
ans->next = num;
ans = num;
if(p1)
p1 = p1->next;
if(p2)
p2 = p2->next;
}
return add->next;
}