两个链表相加
题目:给定两个链表,链表中的每一个元素是一个整数,写一个函数返回一个新的链表,新链表是给定两个链表的和。
例如: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;
}