两个链表相加
题目:给定两个链表,链表中的每一个元素是一个整数,写一个函数返回一个新的链表,新链表是给定两个链表的和。
例如:7->1->6 + 5->9->2 返回 2->1->9
ListNode *sum(ListNode *L1, ListNode *L2)
{
if(L1 == NULL) return L2;
if(L2 == NULL) return L1;
int cn = 0;
ListNode *dummy = new ListNode(0);
ListNode *pnext = dummy;
while(L1 || L2)
{
int val = ((L1 ? L1->val : 0) + (L2 ? L2->val : 0) + cn) % 10;
int cn = ((L1 ? L1->val : 0) + (L2 ? L2->val : 0) + cn) / 10;
ListNode *tmpNode = new ListNode(val);
pnext->next = tmpNode;
pnext = tmpNode;
tmpNode->next = NULL;
L1 = L1 ? L1->next : NULL;
L2 = L2 ? L2->next : NULL;
}
if(cn)
{
ListNode *tmpNode = new ListNode(cn);
pnext->next = tmpNode;
pnext = tmpNode;
tmpNode->next = NULL;
}
return dummy->next;
}