题目
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反
的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
样例
给出两个链表 3->1->5->null
和 5->9->2->null
,返回 8->0->8->null
思路
当前位相加 考虑进位
C++代码
ListNode *addLists(ListNode *l1, ListNode *l2) { // write your code here ListNode* head = NULL; ListNode*p1, *p2, *q, *p; q = head; p1 = l1; p2 = l2; int cp = 0; int t1; int t2; while (p1 || p2) { if (p1) { t1 = p1->val; p1 = p1->next; } else t1 = 0; if (p2) { t2 = p2->val; p2 = p2->next; } else t2 = 0; int sum = t1 + t2 + cp; cp = sum / 10; if (sum >= 10) { sum = sum % 10; } ListNode* p = new ListNode(sum); if (!head) head = q = p; else q = q->next = p; } if (cp) { p = new ListNode(cp); q = q->next = p; } return head; }
时间: 2024-10-06 03:46:50