每日一题(两数相加)
2. 两数相加 - 力扣(LeetCode)
思路
代码实现
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode* p1=NULL, *p2 = NULL, *newhead = NULL,*tail = NULL;
int pre = 0;
if(!l1)
return l2;
if(!l2)
return l1;
p1 = l1;
p2 = l2;
while(p1&&p2)
{
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
newnode->val = (p1->val+p2->val+pre)%10;
newnode->next = NULL;
if(newhead == NULL)
{
//更新pre(进位)
pre = (p1->val + p2->val)/10;
newhead = tail = newnode;
}
else
{
//更新pre(进位)
pre = (p1->val + p2->val+pre)/10;
tail->next = newnode;
tail = tail->next;
}
p1 = p1->next;
p2 = p2->next;
}
if(pre)
{
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
newnode->val = pre;
newnode->next = NULL;
tail->next = newnode;
tail = tail->next;
}
return newhead;
}
完结
两数相加的链表习题的分析就到这里啦,若有不足,欢迎评论区指正,下期见!