1.描述:
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反
的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
给出两个链表 3->1->5->null
和 5->9->2->null
,返回8->0->8->null
3.代码:
if (l1 == NULL)
return l2;
if (l2 == NULL)return l1;
int c = 0;
int temp = 0;
ListNode *head = new ListNode(0);
ListNode *p = head;
while (l1 != NULL && l2 != NULL) {
temp = l1->val+l2->val + c;
c = temp/10;
temp = temp%10;
p->next = new ListNode(temp);
p = p->next;
l1 = l1->next;
l2 = l2->next;
}
while (l1 != NULL) {
temp = l1->val + c;
c = temp/10;
temp = temp%10;
p->next = new ListNode(temp);
p = p->next;
l1 = l1->next;
}
while (l2 != NULL) {
temp = l2->val + c;
c = temp/10;
temp = temp%10;
p->next = new ListNode(temp);
p = p->next;
l2 = l2->next;
}
if (c != 0) p->next = new ListNode(c);
return head->next;
4.感想:这个题感觉好难,就参考的网上的答案,发现每次存节点都要重新申请新的空间,不然就会runtime error