Add Two Numbers

问题:给定两个单向链表,链表元素为整型,链表从表头开始顺序存储了一个整数的低位到高位的各个位,求这两个链表所代表的两个数的和。

这个意思,123 + 456

链表LA:3->2->1

链表LB:6->5->4

和为LC:9->-7->5

code:

class Solution {
public:
	ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
		int carray = 0;
		ListNode *head = new ListNode(-1);
		ListNode *tail = head;
		while (l1 != NULL && l2 != NULL)
		{
			
			ListNode *cur = new ListNode((l1->val + l2->val + carray) % 10);
			tail->next = cur;
			tail = cur;
			carray = (l1->val + l2->val + carray) / 10;
			l1 = l1->next;
			l2 = l2->next;
		}
		while (l1 != NULL)
		{
			
			ListNode *cur = new ListNode((l1->val + carray) % 10);
			tail->next = cur;
			tail = cur;
			carray = (l1->val + carray) / 10;
			l1 = l1->next;
		}
		while (l2 != NULL)
		{
			
			ListNode *cur = new ListNode((l2->val + carray) % 10);
			tail->next = cur;
			tail = cur;
			carray = (l2->val + carray) / 10;
			l2 = l2->next;
		}
		if (carray)
		{
			ListNode *cur = new ListNode(carray);
			tail->next = cur;
		}
		tail = head;
		head = head->next;
		delete tail;
		return head;
	}
};


你可能感兴趣的:(LeetCode,C++,list,list,链表,linked)